Fork me on GitHub
Ahmed Hassan07:06:46

What are major things you found lacking in re-frame while building keechma? one is off course being routing first in keechma.

Ahmed Hassan08:06:22

EntityDB seems more organized DB store than re-frame app-db.


I can't speak for mihael, but the controllers are solving the lifecycle problem for resources , like websockets for instance. Also, re-frame is a lot of event chasing to follow what's happening, that's solved neatly with pipelines and pipeline controllers. re-frame is (was?) mainly about solving the state management issue. Keechma has more functionalities via its companion libs like data loader, local css. finally re-frame is more principled maybe more theoretically sound, but keechma is a more down to earth, less ceremony, getting things done library.


i personally am not completely sold on the routing first part, but i can work with it

✔️ 4

also keechma apps are not global things like in re-frame


don't shush me ! that's a good thing ! you can have several totally independent keechma apps in a single page, that's awesome =)

Ahmed Hassan10:06:18

It was supposed to be thinking face :thinking_face:


For me the reason why I created Keechma after using re-frame was: 1. No globals - this one is extremely important and is powering a lot of advanced Keechma patterns 2. Lifecycles - this one allows you to write apps that don’t leak memory. I was building SPAs in period when IE6 was a dominant browser and memory management is built into me as an extremely important part of building apps 3. Controllers - Based on my experience I was aware of a need to sometimes directly access the global atom, controllers allow you to bridge between your domain code and keechma code with ease. This allowed solutions like pipelines, forms and dataloader to be built because I was able to “inovate” in user-space. For 99% of problems, pipelines are great solution, and you don’t really need a direct access to app-db atom, but for remaining 1% it allows you to write code that makes sense for your app, not for Keechma 4. No globals in component deps - adding a dependency injection layer to components allows you to write independent components that don’t know about their parent OR about their child dependencies. Those are re-mappable from the outside

✔️ 8

yes this all makes keechma very "hackable"

👍 4