hyperfiddle.jar – Hyperfiddle as a library

Last edited: April 17, 2019
2019 April 17: Ability to run from source is not yet documented or supported. If this is important to you, please come talk to us about it so we can do it sooner.
  • Your apps can compile against hyperfiddle.jar.
  • Portable CLJC, used by both frontend (UI) and backend (data sync)

Why would you do this?

Talk to Hyperfiddle services from outside
  • Querying/transacting from external service efficiently
    • You can of course curl hyperfiddle routes over HTTP as application/edn, application/transit+json, etc
    • The optimizing I/O runtime is faster, but requires a client library
  • Transacting from an external service
  • Integrating with foreign services
  • Adapting to GraphQL or REST
  • Connecting/integrating your existing infrastructure
Back a fiddle by JVM code instead of raw Datomic
  • Control the d/query, process the results, then send down
  • Custom security (out-of-the-box user/roles/groups is on the roadmap)
Foreign integrations
  • Enterprise single sign on
  • Enterprise user/roles/groups and security e.g. Active Directory
Data driven forms as a library
  • Adapt foreign widgets (Sencha, ExtJS, KendoUI)
  • Complex enterprise widgets on top of ours (spreadsheet grids, infinite scroll, master/detail, photobox)
  • You like automatic UI but you don't like the way we did it
Control I/O runtime and fiddle-graph processing
  • I/O optimizer is a fiddle-graph layer abstraction
  • Control how requests are partitioned into subgraphs by time-basis for better caching
  • Control data-sync – take advantage of infrastructure, lambdas, integrated CDN, etc
  • Control transport - HTTP, websocket, server side renderered pages, turbolinks, something different
  • Extend the I/O runtime with new semantics
    • for example, :hf/iframe is implemented at this layer
    • you could implement :hf/options which might have lazy loading
  • Use machine learning to make I/O runtime get smarter over time (like Google Chrome's I/O) – predictave pre-fetching, etc
Drop underneath the fiddle-graph abstraction, the next primitive downwards is api-as-a-function
  • No I/O optimizer, coding exactly what queries run at what times is now your responsibility
    • For example, popovers, Datomic time-basis for any databases in play, database values – all your problem
  • You are responsible for data sync, and now care about distributed systems and cloud infrastructure
  • You are writing JVM Clojure code and hosting it on your own JVMs
  • You understand the Hyperfiddle source code