As I’ve increased my knowledge and experienced some of the challenges of modern web programming, I’m now re-visiting Om. Having gained more understanding of React I now find Om easier to understand and found the Clojurescript and Om course very useful. However, I also now have a much greater appreciation for what David Nolan is attempting with Om.Next. The issues he is trying to address with Om.next are very much in-line with some of the challenges I’ve encountered when developing SPAs with Reagent. Very much looking forward to Om.next.
I have a fairly strong opinion about frameworks. I’ve looked at Reagent based Re-frame and have used things like the Luminus framework to get a project started. I think these are really good learning tools. However, I’m less keen on the concept of frameworks in Clojure/Clojurescript than in other languages such as Ruby and Rails. Too often, I find that frameworks can force you into a structure and a solution space which are not necessarily optimal for the problem you are solving. One of the things I love about Clojure and Clojurescirpt is that it is easy to build your own ecosystem based on just what you need and no more. You are able to structure things to fit your mental model rather than being forced to try and get your mental model to fit with the framework. The challenge is knowing what is possible and how to compose your environment - this is where frameworks are so valuable. Note that I don’t consider Om, Reagent etc to be frameworks. These are libraries. Frameworks are things like Luminus or Re-frame.
If you are very new to Clojure and Clojurescirpt, I think the Luminus web framework is a great starting point. It provides a good example of how you can compose your environment and how you can grab different libraries to solve parts of your problem. However, I would use it just for learning. When it comes time to write your first serious web application, I would start with a minimal lein template and add bits as you need them - keeping things as simple and minimal as necessary.
The other resource I use a lot is github. While you can learn a lot from reading books, blogs etc, nothing teaches you more than reading and analysiing other peoples code. This also holds for Clojure and Clojurescript. One of the things I like about the clojure world is that when trying to understand how a function works, you can easily view the code and while it may take a bit to understand how that little snippet of code works, the effort is extremely rewarding and provides the sort of insight which helps you improve your own code.
The video Eric links to is well worth watching. It provides a good overview of the differences between the 3 main React wrappers. I would also highly recommend David Nolan’s talks/videos on Om.next. However, you probably won’t get to really appreciate the subtitles involved until you sit down and try to use the different libraries.
I’m not sure if detailed tutorials or analysis of the different React wrappers is going to be that beneficial given the amount of work it will involve. Part of the issue is that this area is still moving very quickly and any work done to compare and contrast or even explain how to use the different frameworks will likely be outdated very quickly. I also think that if you understand Om, you will have no problems understanding Reagent and once you have experience with Reagent, you will have no real problems getting to understand Om. Therefore, my vote would be to put resources into an updated tutorial on Om.Next once it has reached at least a beta release.