If the phasing out of Datomic-free is a real possibility, I’m very concerned about that, and would like to take some time to explain why. I’m a paying customer for Cloud, so it’s not about that. It’s about running a full stack locally.
I find Datomic to be a game-changer in several ways. One of the most important is the “we give you a brain” idea from Rich’s early presentation. With Cloud, this advantage was lost, but it came back as “give us your thoughts” with Ions (please correct me if I’m wrong here). The ability for Clojure application code to run in-process with the database is enormously powerful. I see Datomic as a “fully programmable” database. My application server is the database. This is awesome.
With Cloud we use the client API, so we can always change the server architecture and have application code and the DB separate, but does that mean we should no longer rely on the (wildly different) performance characteristics of the “programmable database”?
Another huge win with Clojure is of course the incredibly interactive style of development, so “give us your thoughts” for every little change is a non-starter. The only option then, that keeps the programmable-database performance characteristics, is “we give you a brain”. I can do this with Datomic Free + datomic-client-memdb. TBH I’m already a little nervous that I have to use an obscure third party library for a fully local dev setup. When I first got started with Datomic Cloud I found it VERY strange that this wasn’t supported out of the box.
I have a sinking feeling someone’s going to tell me the whole “we give you a brain” dream has not stood up in the face of real-world experience, and we need to accept that app server and DB will usually end up talking over the network. That would be a great disappointment.
If I’m wrong about that, great! Then, the need for a dev setup that has both a local REPL, and an in-process Datomic “brain”, is absolutely critical. I really hope I don’t end up having to pay for an on-prem license AND Cloud, or, much worse, it becomes impossible to run a client API app fully locally.
Even ignoring the issue of in-process vs network DB, developing with a remote Datomic adds annoying latency, which has a big negative impact on the overall dev experience.
Thanks for your consideration. I realise that you are balancing a ton of different needs/goals, and it’s not easy.