[racket-dev] new package system status

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed Nov 20 19:18:01 EST 2013

At Wed, 20 Nov 2013 14:10:05 -0500, Neil Van Dyke wrote:
> What's the status of the package system?

Some possible answers, depending on how you mean the question:

 * It's much improved since v5.3.6, and we're starting the release
   process for v6.0 to get all the latest out to everyone.

 * http://www.cs.utah.edu/plt/snapshots/current/doc/pkg/index.html

 * Most of the message


  is still accurate if you treat the to-do items as long since done.
  Meanwhile, we have new things on the to-do list --- notably, making
  package documentation more accessible.

> * The documentation for the package system in 5.3.6 does not seem to 
> reflect previous discussion, and the chapter title still says "(Beta)".

Version 5.3.6 was a relatively minor set of bug fixes on v5.3.4, so its
package documentation reflects the state of the system in April ---
which feels like an eternity ago to me.

> * "https://pkg.racket-lang.org/" has roughness like requiring JavaScript 
> to navigate, which is not only bad for browsers but bad for search 
> engines.  (Usually, for this kind of site, we'd want to start with a 
> page structure, and then add in backward-compatible JS for slickness.)

That sounds right to me, but I'll leave it to someone who has worked on
it (or will work on it) to comment further.

> * How are people even supposed to view package documentation while 
> browsing packages on "https://pkg.racket-lang.org/"? 

I agree that we need documentation to be more readily available. We
have some specific plans, and maybe the end of the semester will give
us time to implement them.

> but it's unclear that the new package 
> system is improving its third-party packages story.

Let us know what you think after you've actually used it for a while. :)

> Is it still focused 
> on breaking up core Racket, and someday we'll see more thinking about 
> third-party packages?

I would not say that the package system was ever focused on breaking up
core Racket. I tried to explain why in my July message (referenced
above), and I tried harder in my RacketCon talk (although I don't know
whether that talk worked in any sense). I'll try one more time:

Jay's package system design is focused on "third-party" development.
The design worked well enough that we were able to move nearly all of
the Racket distribution to "third-party" mode, and thus move in the
direction of eliminating the "third-party" distinction altogether ---
much in the same way that we've worked to eliminate the distinction
between "language" and "library".

At the same time, converting the Racket distribution into packages has
forced us to address a range of issues that we would have otherwise
overlooked. It's possible to view that effort as being specifically
about splitting the distribution, but I have always viewed it as
working toward the best possible package system.

Furthermore, [... this is where I jump to abstract/worldview mode,
similar to my RacketCon attempt, so disregard if it adds nothing ...]
we can always ask the narrow questions of whether the package system
has specific feature X, and we can always ask the broad question of
whether there is a different and better design point to start. In my
view, the former misses the big picture, and the latter is a fog that
we can't penetrate by standing in place. The way out of the fog is to
get someone with a specific vision to go build something. Then, the
only way for everyone else to see the big picture is to spend a while
exploring the built result.

> [*] Ahem, in the process of someone forking my package into the new 
> thing, they lost my name from the metadata, broke my legal notices, and 
> added a "LICENSE" file that claimed copyright to their name.  I'm sure 
> that was just a careless accident, since that package has some of the 
> very first Scheme code I ever wrote, and nobody would claim ownership of 
> it intentionally. :)

That was a significant mistake, and I hope that it's corrected with the
recent change.

Posted on the dev mailing list.