Last updated on Friday, November 2, 2018
This is the first in a series of 5 posts. Post will be updated with links to the other articles.
"I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail."
- How easy is it to attract additional engineers and onboard them?
- How viable is its ecosystem in the long-term?
- What facilities does it have for debugging?
I'm in the process of setting up a basic application specification, in broad strokes it will need to:
- Communicate with a RESTful or, preferably, GraphQL API
- Have multiple routes
- Share state between at least 2 of those routes, without loss of already fetched data
- Run self-contained in docker
In the process of replicating the application's functionality, I'll of course be reading documentation, interacting with their respective communities, and in general trying to get a feel for what it'd be like to use this language every day and maintaining it long-term. If a community is hostile to beginners, there's very little I can do when more front-end engineers are on-boarded, and that's not something I'd feel comfortable exposing my future colleagues to. If a language releases breaking changes often, and the upgrade process is manual or not well supported by automatic tooling, that's a lot of extra work to take on, which needs to be carefully weighed. All this to say, choosing an obvious winner might not be so straightforward.
So, let's meet the competition...
Typescript & Flowtype
I've grouped these two together, which led to some resistance on twitter, but I will evaluate them both independently. I'm obviously not going to rewrite everything from scratch between these two, and seeing how to add typing to existing code will be important, so I'll start out with some stand-alone UI work.
There's plenty of buzz around ReasonML, which makes me both interested and weary. Hype wears off, but will it be maintained after? Seeing it has Facebook's backing, and they're building Messenger.com with it, gives me enough confidence to at least take the language into serious consideration.
Elm was all the rage about a year ago, and I'm happy to see the language and its ecosystem are progressing after the hype wearing off somewhat. There were plenty of encouraging remarks from people replying on twitter, and Elm is famous for its friendly compiler, so I'm stoked to put some real time into working with it.