Following a discussion about namespaces from another topic, I was wondering about the current state of conflicting exposed modules in elm 0.19.
So to have a better picture of the conflicts currently present in the packages repository, I made a quick script and the results are here:
We get the following numbers:
- 566 elm 0.19 packages found
- 1491 unique exposed modules names found
- 189 conflicting modules found (around 13% of unique exposed modules names)
Those are actually often forked packages, pre-releases or very similar packages so I cleaned it up a little with the following (quite arbitrary) rules to have a better picture of the potential real-world issues (as it would be quite unexpected to use several at once, except maybe for testing or when transitioning):
- ignore conflicting module when all packages are from the same author
- ignore conflicting module when packages have almost the same name
- ignore Bootstrap or Bulma packages
I get the following list:
{
"Base64": [
"danfishgold/base64-bytes@1.0.1",
"truqu/elm-base64@2.0.4",
"waratuman/elm-coder@3.0.0"
],
"Color": [
"avh4/elm-color@1.0.0",
"elm-athlete/athlete@4.0.0",
"tesk9/palette@1.2.0",
"the-sett/elm-color@1.0.1"
],
"Color.Convert": [
"elm-athlete/athlete@4.0.0",
"noahzgordon/elm-color-extra@1.0.1"
],
"Color.Interpolate": [
"elm-athlete/athlete@4.0.0",
"noahzgordon/elm-color-extra@1.0.1"
],
"Color.Manipulate": [
"elm-athlete/athlete@4.0.0",
"noahzgordon/elm-color-extra@1.0.1"
],
"Csv": [
"jonoabroad/commatosed@1.0.0",
"lovasoa/elm-csv@1.1.5",
"zgohr/elm-csv@1.0.1"
],
"DatePicker": [
"CurrySoftware/elm-datepicker@3.0.1",
"abradley2/elm-datepicker@4.0.1",
"goilluminate/elm-fancy-daterangepicker@3.2.0"
],
"Diff": [
"indicatrix/elm-input-extra@1.0.1",
"jinjor/elm-diff@1.0.5"
],
"Dropdown": [
"fedragon/elm-typed-dropdown@2.0.2",
"hercules-ci/elm-dropdown@1.0.1",
"indicatrix/elm-input-extra@1.0.1",
"indicatrix/elm-input-extra@1.0.1"
],
"Force": [
"gampleman/elm-visualization@2.0.0",
"ianmackenzie/elm-units@2.0.2"
],
"Form.Input": [
"bluedogtraining/bdt-elm@26.0.1",
"etaque/elm-form@4.0.0"
],
"Grid": [
"bluedogtraining/bdt-elm@26.0.1",
"joakin/elm-grid@1.0.1",
"the-sett/the-sett-laf@6.0.0"
],
"Matrix": [
"Kraxorax/elm-matrix-a@2.0.0",
"ryry0/elm-numeric@1.0.0"
],
"OrderedDict": [
"wittjosiah/elm-ordered-dict@1.0.1",
"y0hy0h/ordered-containers@1.0.0"
],
"Plot": [
"Bractlet/elm-plot@1.0.1",
"NoRedInk/elm-plot-19@1.0.0",
"terezka/elm-charts@1.0.0"
],
"Rating": [
"Bernardoow/elm-rating-component@2.0.2",
"FordLabs/elm-star-rating@1.0.0"
],
"Tree": [
"miyamoen/tree-with-zipper@1.0.0",
"zwilias/elm-rosetree@1.3.1"
],
"Tree.Zipper": [
"miyamoen/tree-with-zipper@1.0.0",
"zwilias/elm-rosetree@1.3.1"
],
"Validate": [
"kirchner/form-validation@1.1.1",
"rtfeldman/elm-validate@4.0.1"
],
"Validation": [
"ericgj/elm-validation@2.0.0",
"iodevs/elm-validate@3.0.3",
"ozmat/elm-validation@2.2.1"
]
}
I don’t have myself a conclusion yet, feel free to comment.
Here is the full modules list if you want to process it:
PS: these lists are only about packages exposed modules. I’m not sure if packages internal modules can also conflict, does anyone know?