My anxiety about ClojureScript in npm ecosystem
I'm becoming less and less confident on ClojureScript due to the long period problem on integrating with npm ecosystem. In the old days, we have CoffeeScript, which compiles to JavaScript, and everything in CoffeeScript corresponds to something in JavaScript. And it's just JavaScript, said CoffeeScript.
As the npm ecosystem evolves, it's never a problem to fit CoffeeScript into js world. It's using Browserify, RequireJS, or Webpack, or something else. CoffeeScript works naturally. As the alt-js community expands, we have TypeScript, Flow, BuckleScript, PureScript and all other languages, after Webpack became popular. Then it's just simple a Webpack loader to make another language work with existing JavaScript projects.
And it's a problem in ClojureScript.
I'm not going to talk about the solution. Thheller once told it was quite complicated to deal with all the cases. And I'm not even familiar with all of those cases.
My anxiety is, I want to recommend ClojureScript to more people. But it's always a challenging problem to convince most of them ClojureScript is simple. And more and more I found, it's hard to prepare a solution for real-world apps based on ClojureScript.
Say my friends want me to build a project for them, a Web UI for their server-side app. And I'm going to choose React and ClojureScript. I'm very sure I need to use lots of npm modules in order as the project grows. I basically want to get the job done. But I see the problem ClojureScript has not really solved the :npm-deps
thing yet. Or maybe it's somehow solved, but where can I find a guide if I want to finished this job in an afternoon? It's already mature solution in Webpack anyway. (shadow-cljs is great, but I heard it's not all ready.)
Then another problem is I will be to slow to finish the tasks in time, I need someone who writes ClojureScript to help with the project. But who can I refer to? (Somehow I want help in Shanghai if that's possible, but no.) ClojureScript is a Lisp dialect that we don't have enough programmers out there offering help. And we have Om, Reagent, Rum and other tools for React apps, it's even harder that I can reach help.
I'm feeling anxious.
As I talk to more people in China, I found some friends who are interested in learning the languages and understand them well. Meanwhile I also find a lot more people learnt programming for making money or realizing their dreams. Most of the dreams in the world are not becoming a smarter programmer, but creating great stuffs or contributions. Clojure is a cool language, but to create web apps, we still see problems getting in the way of helping others build stuffs.
I quitted my job in July and tried to give myself a long break. What I found is the world is much broader than I saw before, I have to learn more skills that are unrelated to programming languages in order to become a responsible adult, which means less concentration for programming itself. It's an uncertain future in front of me, and it makes me feel anxious.
So I think they are really naughty problems. ClojureScript has barriers that prevent people from picking it up really quickly. ClojureScript programmers have to worry about fighting alone. JavaScript was definitely a bad design. However many people copy code from the guide and create great piece, without really mastering the language itself. It's not what we achieved in ClojureScript.
Probably things are much better outside China since programmers may be better educated. But a lot people just chose Vue for it's simplicity, in and abroad China. So they also got reasons not to choose ClojureScript either.