# Suggestion: track if your modules have been installed from pkg server

**URL:** <https://racket.discourse.group/t/suggestion-track-if-your-modules-have-been-installed-from-pkg-server/675>\
**Category:** Questions & Answers\
**Tags:** suggestion\
**Created:** [February 10, 2022, 11:02pm UTC](https://racket.discourse.group/t/suggestion-track-if-your-modules-have-been-installed-from-pkg-server/675 "2022-02-10T23:02:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dstorrs](https://avatars.discourse-cdn.com/v4/letter/d/898d66/32.png) [@dstorrs](https://racket.discourse.group/u/dstorrs)\
**Post date:** [February 10, 2022, 11:02pm UTC](https://racket.discourse.group/t/suggestion-track-if-your-modules-have-been-installed-from-pkg-server/675/1 "2022-02-10T23:02:54Z")

</div>

I often find myself wondering if the packages I've posted are in use by anyone. In part for the egoboo but also because if they aren't in use by anyone else then backwards compatibility isn't as important a consideration.

It's a thorny question, with issues about privacy etc. Some options would be:

1. raco pkg install drops a tag for the username (privacy issue!)
2. raco pkg install increments a number on the package server saying "this has been installed by N times" (or "...by N different instances"?)
3. There could be a "raco pkg iuse" command that allows people to explicitly tell the package "I use "
4. This is all silly and not worth spending time on. :\>

Options 1 and 2 could be opt in or opt out, obviously.

This is something of an idle thought. Does anyone else have feelings about it?

---

<div class="post-metadata">

**Author:** ![joeld](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joeld/32/38_2.png) [@joeld](https://racket.discourse.group/u/joeld)\
**Post date:** [February 11, 2022, 4:42pm UTC](https://racket.discourse.group/t/suggestion-track-if-your-modules-have-been-installed-from-pkg-server/675/2 "2022-02-11T16:42:38Z")

</div>

Other ideas:

- Package server could list all the _packages_ it knows of that depend on your version. (Probably not simple to implement)
- After `raco pkg install mypackage`, if `mypackage` is hosted on Github or Gitlab, prompt the user to open the GitHubLab page for the package and star the repo. This would miss all the dependencies of the package, probably acceptable. But this further entrenches Github as the only git host, which is not good.

---

<div class="post-metadata">

**Author:** ![joeld](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joeld/32/38_2.png) [@joeld](https://racket.discourse.group/u/joeld)\
**Post date:** [February 11, 2022, 5:01pm UTC](https://racket.discourse.group/t/suggestion-track-if-your-modules-have-been-installed-from-pkg-server/675/3 "2022-02-11T17:01:49Z")

</div>

For the most part this info is likely to go stale very quickly even assuming you could feasibly collect it to begin with.

I think this really points to the fact that package versioning and dependencies in Racket are a little broken by default for most common use cases, as the recent `memoize` debacle illustrates. An end user can manage them properly by maintaining their own package catalogs, but almost no one does (including me). So the best package authors can do is document breaking changes and hope for no nasty messages after the push.

---

<div class="post-metadata">

**Author:** ![alexh](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/alexh/32/315_2.png) [@alexh](https://racket.discourse.group/u/alexh)\
**Post date:** [February 12, 2022, 12:10am UTC](https://racket.discourse.group/t/suggestion-track-if-your-modules-have-been-installed-from-pkg-server/675/4 "2022-02-12T00:10:28Z")

</div>

> [@joeld](#):
>
> Package server could list all the _packages_ it knows of that depend on your version. (Probably not simple to implement)

You can already do this. You can copy the catalog locally using the command

```scheme
raco pkg catalog-copy https://pkgs.racket-lang.org ./local-catalog

```

...and you have access to all the package metadata that the package server has access to. All the files are just serialized hash tables, so they can be read into a racket program using `read` to analyze the package information.

You can also simply use grep to search the code. For example to find out which packages use `memoize` as a dependency, you can run `grep -l memoize *` in the `pkgs` subfolder.

I understand that this is not as easy or as convenient as most users would like, but given there is a small number of volunteers in the Racket community, there is little chance of the situation to improve...

Alex.
