Choosing packages

An Example

I just read the following in the elm/time docs:

I think the community should make some packages that define fromIso8601 : String -> Maybe Time.Posix in Elm.

Okay, great. So I searched:

:thinking:

General Questions

  1. How are these sorted? Not by author name, package name, or version number AFAICT. By popularity (and if so, calculated how)? Randomly?

  2. How do folks typically tackle the process of choosing which package best suits their needs? Picking amongst a half-dozen choices isn’t too daunting, I admit, but I worry that there is a nascent scalability problem here.

  3. I note that two of these packages are clearly labeled as clones of rtfeldman/elm-iso8601-date-strings in order to make certain fixes available. I hadn’t encountered this before. Is this the way folks typically get around the problem of unmerged PRs? Again, I worry there is a nascent scalability problem here.

Interested to hear everyone’s thoughts – thanks!

4 Likes

1: I remember reading in an earlier discussion that they are sorted alphabetically, but that there are some exceptions who are special-cased to appear first.

3: Yes this is common, unfortunately.

there should be a way to hide forks

1 Like

It is sorted alphabetically - but authors who have given talks at Elm conferences are promoted to be first in the list.

This seems… not ideal?

  1. There is definitely more to it than pure “nr of talks at conference”. I assume the first few packages are hand-picked (as they are the most used packages), that’s why when searching for “css”, elm-ui comes up before rtfeldman, even though mdgriffith has less conference appearances. As far as your example goes, this seams to pay of, as rtfeldman/elm-iso8601-date-strings would be the way to go.
  2. I would first exclude all clones of existing packages (as they are often not maintained for long). Then I typically use the one with the better documentation, as that most often coaligns with a well thought through implementation.
  3. Elm packages have a tendency to take their time till bugs are fixed. It’s often recommended cloning the package into the repository of your project and implement the fix yourself, until the original package releases the next update.
2 Likes

Not really. Here is the code that generates the weights.

5 Likes

The more is that it’s the number of conference talks up to Elm Europe 2018, and elm-explorations gets a massive boost, elm gets a ridiculous boost.

It would appear that only the GitHub username of the conference presenter is used, which seems rather odd. In the case of elm-vega and elm-vegalite, Alex Kachkaev presented the work at Elm Europe, but we publish the packages under the group name gicentre, so there is no ‘boost’.

For us, it’s not a big issue as there are (currently) no forks of our package published, but there may be others who don’t use their personal GitHub names to publish.

It seems like PageRank would be a good option for sorting the search results (although ideally we would also include application codebases in addition to library codebases as nodes, and I don’t think there’s a way to do that).

maybe package.elm-ladg. off should allow ratings and reviews for packages

4 Likes

I second that - for reference Dart’s package manager has a pretty great setup for ranking/choosing package. Elm’s package mgmt could take a lot of ideas from that.

https://elm.dmy.fr/ (and https://dark.elm.dmy.fr/, see here for context) sort packages by actual usage in other packages and open source elm applications on GitHub.

The same ranking is used in elm-language-server.

I have not updated the ranking since 6 months ago, but it should still be quite relevant for mature packages. I will likely update it again in the coming months.

Edit: the ranking is an experiment and an evolution of the one described here.

8 Likes

I have updated the ranking on elm.dmy.fr and dark.elm.dmy.fr and made a PR in elm-language-server.

1225 packages have been evaluated from their use in 5724 Elm applications on GitHub and in the packages themselves.

1013 packages have been ranked.

Because packages unused in other applications or packages are still evaluated from the ranking of their author other packages, unranked packages are those unused in packages, applications and without other ranked package from the same author.

Feedback is very welcome.

Edit: I removed broken packages from the ranking (they are still listed at the end for now as I don’t filter them yet from the official server package list which is used)

7 Likes

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.