@dbuenzli thanks for taking the time to answer!
I think we should encourage more public discussions like this since we all can learn a lot from each other. Especially because I think your contributions have time and again forwarded the OCaml platform
I’ll say tho that the Rambling Machines mailing list is meant as a place for me to share less-polished ideas, with as little editing as possible, in contrast to the essays I’ve got on my website.
I even encourage replies like this one!
With that out of the way, on to your points!
before they start to become myths
I don’t think I’m starting any myths here. I’ve heard this from a lot of people coming from the Reason world, for well over 3 years now.
Regarding 1. I don’t think the API is hard to use
Hard and easy are completely subjective and rely on your body of knowledge and experience. If you asked me how hard it is to contribute to Caramel, I’d say its super easy! But also, I wrote it, and I’ve become more familiar over time with the OCaml compilation toolchain, and AST traversals, etc. “Easy” is earned.
Sometimes a “hard api” is the one that only lets you do the right thing, or impose usage patterns that take a lot of time to figure out, or doesn’t use the metaphors you’re used to. This is, again, entirely subjective.
If this sounds confusing its because when people say easy or hard they mean very different things.
Sometimes in the same sentence.
Regarding 2. You absolutely do not need to understand what an applicative is to be able to use the library.
I absolutely agree!
What I meant with “actually understand how to use cmdliner” (emphasis as in the newsletter issue) is that to be able to think clearly about what the code is doing, you need an understanding of applicatives. Maybe only intuitively. That’s what the “actually” stands for in that sentence. Lack of editing gets you this lack of nuances so I’ll agree with you that this could have been written more clearly.
Of course you can use cmdliner and get a cli running, but that doesn’t mean you understand how it does it – just like I don’t have the palest clue how my inductive stove works, and I still can make food.
Here are few reasons for why this is the case:
This is good background story to understand the current state of things. Thanks for sharing!
These thoughts largely miss the point in my opinion
Perhaps! But the points you focused on when designing and evolving Cmdliner left gaps, by choice or accident, that I tried to highlight. Some of those gaps exist there because you are a proficient ocaml programmer focused on building composable and scalable libraries.
Which is why I really like that you took the time to reply and make your focus clearer as well.
Anyway, I’d be happy to continue this chat and explore some of your new ideas for the API
Maybe we can find ways to make it composable and scalable while remaining intuitive and convenient to a larger part of the ecosystem.