For my package plist-xml
, I used the package markup
for the underlying XML streaming parser. However, the xmlm
package, another XML streaming parser, seems to be more widely used. (The author of markup
even recommended using xmlm
for most use cases.) But, the specific project I was making used lambdasoup
, which depended on markup
, so for my specific situation, using markup
made sense to share a common dependency. However, suppose someone were to depend on my package, and also depend on xmlm
(possibly as a transitive dependency of another package). Then, using xmlm
would have allowed that person to minimize dependencies, but because I used markup
, that person’s code would have two packages that have similar functionality in the same compiled code.
So, if I wanted my package plist-xml
to be more useful to other people, should I rewrite it to use xmlm
, since it is more widely used as a dependency? Or, should I publish a new package that uses xmlm
, even though the majority of the code would be shared with the code of plist-xml
? Or am I overthinking things, and my choice of dependency really doesn’t matter for making my library useful for other people?
This example isn’t the only case in the OCaml ecosystem where there are multiple packages that have a similar purpose. I wonder if anyone else had a similar dilemma where there were multiple dependencies to choose from, and how you decided which dependency to use?