Hi all, we’re building a team(and a company), using Rescript(client side only), we’re now hiring and onboarding new developers and i wanted to share the experience here so that hopefully it’ll help prioritise much needed quality of life changes to make adoption easier:
- Editor support is the biggest issue, our first developer started with WebStorm, and it’s simply unusable(go to definition never works, hover to get help doesnt either) - We should aim fixing this, WebStorm is big, and either we say that it’s not supported or we focus on fixing it. if it was not us saying that VSCode is the way to go, they might just think that reasonml is unusable.
- When we managed to move to VSCode, we started encountering all the various edge cases:
- When adding a new package you need to restart RLS(but you dont know that, it’s not written anywhere, so we learned that the hard way by trying to fix an error that just wasnt there) - I would say this is terrible for new-comers to the point that i would never recommend reasonml for someone without hand-holding.
- Same as above applies with the weird behaviour in-between reason and monorepo, which i documented in many issues and hopefully it will get some attention.
- Error reporting is simply unusable for new-comers. i would say that a lot of the times, rescript throws us errors that feels like the JS X is not a function type of errors. you can not understand what they mean. especially when dealing with complex types, you sometimes get 10lines of errors, a lot of the time the text there repeats itself and even for the rest of the team that works with reason a lot, we’re left guessing and “trying” things without knowing what the issue is.
- Developers come to expect some functionality out of their editors(refactoring, renaming etc), there are none of these currently, which leaves me trying to explain why reason is still worth it(it’s, but it makes the sell so much harder)
- Goto definition sometimes works for ReasonReact, but sometimes doesnt - this again, another nail in the coffin of not trusting the IDE when using reasonml.
Summary for the editor part: Rescript/Reason editor support is 10x worse than most languages we’ve been working with(including js). Beside the point that the issues above are actually effecting productivity -> It hurts onboarding and “selling” it. my personal note is: Please stop focusing on code-tweaks and make the language usable. everyone i know would be 100x more excited about proper error reporting/refactoring capabilities in the IDE.
- The binding situation is problematic: Not enough condensed documentation, its still very hard to find good sources of truth on how to do stuff regarding bindings. i’m still not familiar with all the different ways/flags out there. the only way i know is either searching github, or asking in discord - I suggest a huge focus on picking huge js libraries and creating a bindings to them that the community supports(like typescript).
- Lack of real-world examples: our stack is Elixir+Reasonml(with react), while Elixir has Phoenix and a lot of HUGE projects built on it, i can easily point someone to find a good project maintained with Elixir(and it’s by design, the creator of Elixir took Phoenix as a strategic endeavour) - Reasonml doesnt have such a thing.
We’re still keeping reasonml and are investing a LOT of effort making it work. but if i can give one important pointer to the leaders of this - Please focus on making life easier to build real stuff VS code-tweaks and new encodings or performance improvements - A good editor support is a MUST now days, Good errors are a lifeline for new-comers. good bindings for everything is super important.
Hope it’s constructive feedback. please let me know and i’ll elaborate on everything.