Hoplon users out there?

Hey everyone! I’m wondering if some of you are using Hoplon as a front-end framework for Web development. I haven’t started much yet so I’m still looking for the tools I’ll put my energy on learning. Hoplon/Javelin really speaks to me with its simple model à la spreadsheet that I can easily reason about (my mechanical enginnering background for sure :yum:). It seems simple yet powerful. However, I mostly hear about re-frame, Reagent and the likes out there, not so much about Hoplon. Is there a good reason why?

I find re-frame really well defined too in the sense that there’s only one way to do things, in a predictable manner. However, from what I understand so far, I feel like I could use approximately the same design patterns as re-frame while still keeping the familiar cells and formula cells from Javelin. Or maybe it’s not even necessary? I don’t know…

And what about the mechanics? Again, I could be wrong, but it seems that Hoplon generates HTML from simple composed functions without a need for a virtual DOM. If that’s true, I feel that it’s more in line with the functional programming approach, no?

I know that in the end, I should chose based on my preferences, but as a beginnerish, I don’t feel like I have enough knowledge to weigh all the pros and cons of different technologies and I don’t want to paint myself in the corner either. Any thoughts? Thanks a lot!

3 Likes

@davidsavoie1
Havent used hoplon so far.

Apart from re-frame there is also fulcro, that has a different model (om-next like).

http://fulcro.fulcrologic.com

For me fulcro was the winner & the one I went with. Really love it so far.

It’s understandable that Fulcro is om-next like: it’s a fork of Om.next. I really like what Tony Kay and the rest of the Fulcro contributors have done by adding sensible defaults to reduce the amount of boilerplate that I would run into when developing in pure Om.next. I started using it while it was still called Untangled. The amount of documentation they have is impressive, though it could use some organization and editing. It’s almost daunting to work through it all.

Also started learning when it was also called Untangled, and do agree on the fact that the docs can seem a bit daunting :slight_smile:

Resources have been organised and edited. Case u missed it, now about all you need is a book format, just reached chapter 4, but really awesome so far (clear & concise):

http://book.fulcrologic.com/

Really think it’s awesome in clojure that you have to many great alternatives:
holon
re-frame
fulcro
rum

http://shadow-cljs.org/ also looks really interesting.

Great times :slight_smile:

1 Like

I use Hoplon for a small personal side project. I like it. The only challenge I’ve had with it is that it’s meant to be used with Boot instead of Leiningen, which seems to complicate usage of some tools and such (e.g. IntelliJ).

I use Hoplon and have been very impressed with it. It’s community is admittedly smaller, but is very active and welcoming.

Hoplon is more simple than React frameworks, in that it propagates reactive DOM changes more directly with standard javascript (jquery and/or goog.dom) and the Javelin library’s cljs dataflow, which is easy to reason about. Data-flow + Cells is a powerful “reactive” model. Similar to re-frames data-flow + ratoms I guess, but no object lifecycles to worry about.
Boot was developed by the authors of Hoplon, but it can be used with Leinengen and Figwheel, or even alongside other frameworks.

The simplicity is dual edged. The libraries are small, and you can reason about the whole thing. But it is a relatively thin layer on the state of the browser, so you can do anything you want if you know your way around the browser/DOM, but it’s not prescriptive. There are as many ways to do things as there are js and css libraries and ways to structure markup and cljs state data. So if you are looking for a well-beaten path and polished ancillary libraries, you might be better off with re-frame. But then again, its relatively easy to integrate polished js and css libraries and benefit from those communities.

I am a relative newbie coming from front-end markup land. I was able to go far with Hoplon and Cljs building up some pretty sophistiated reactive UI’s based on reactive cells. I feel I can do as much as my css, svg, cljs, js-interop, js/html5/dom knowledge allows. Hoplon is a simple but powerful conduit to realize that knowledge.

Here is some more information:
Some discussion about Hoplon’s virtues and how to highlight them
https://github.com/hoplon/hoplon/wiki/Performance
https://github.com/hoplon/hoplon/wiki/Get-Started

1 Like

Thanks for this feedback! Your understanding of Hoplon + Javelin matches mine, in that it does seem simpler and easy to reason about, but doesn’t give you a clear best practices way of doing things with it out of the box. In this regard, it reminds me of its foundational concept, the spreadsheet, with which some people design carefully crafted powerful tools and others create a big mess of intertwined and unmanaged state. I think that careful upfront problem thinking and solution design can prevent many traps, but I understand the value proposition of re-frame, where there IS a proper way of doing things, most of the time.

Concerning the DOM changes, I understand that React uses a virtual DOM, and hence needs those object lifecycle hooks. But is there a specific gain in using React’s virtual DOM over simpler JQuery or Goog.dom direct manipulation? If so many people embrace this complexity, I suppose they get something more powerful in return?

In broad terms the added complexity brings you performance. I don’t know if that performance boost is significant in most apps though, but the react crowd will tell you it is.

The idea behind the various virtual DOM models is that changing the (real) DOM is expensive, and by using a virtual DOM the minimum amount of changes can be computed and performed in a single DOM update. In React, that update runs approximately every 16ms.

Yeah, I think the hoplon philosophy is that worrying about the performance benefits of react is almost always a premature optimization. How many updates to your UI do you really need to make per second?

In return hoplon allows you to operate at a higher level, worrying only about state, state changes, and dom elements with nothing in between. Personally I pretty much never feel as expressive when programming as when I’m using hoplon to make a web page that does stuff. Being able to just type out dom elements with their state cells directly attached feels so powerful. I often leave hoplon for months, and then come back to it to do something and never even have to look at a page of documentation to refresh any memory, because it’s just html elements + “excel spreadsheet”.

I feel like hoplon is the most underrated clojure library.

2 Likes

I have to admit that I have never used Hoplon to build anything, but it has been on my wish list for quite a while now. Your comment makes me want to build something with Hoplon even more. :slight_smile:

2 Likes

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.