Datomic-free being out-phased?

The latest Datomic-free version is 0.9.5703.21 whereas the change log shows changes up until version 0.9.5966 (for the pro version I presume) with several bug fixes and features added.

Will the free edition catch up with the Pro edition at some point or are you slowly abandoning it? I hope not, since the free edition is valuable for newcomers wanting to try out Datomic (without registering) and for open source projects without a budget.

You might want to fix a broken link to “Changes” for version 0.9.5703.21 on the Datomic Free Downloads page.

I find it confusing that the two latest free versions are not available in the clojars repo. Or are they available with some other repo coordinates (can’t find them on maven)?

Hope that you can clarify your plans for the free edition. It would be awesome if it could catch up and be on par with the Pro edition (apart from the natural limitation of 2 simultaneous peers and transactor-local storage only).

4 Likes

It’s a bit of a concern that there’s no Cognitect response here after 18 days.

2 Likes

We are aware of these issues and are considering options.

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.

3 Likes

I can obviously not speak for Cognitect, but my understanding is this:

  • use of the client API is simply to have a clear abstraction that can be used remotely and locally - if your code runs inside Datomic Cloud (Ions) it is not doing a ‘network call’, it is accessing the data in-process (very similar to the Peer model, but not via the Peer API). This is mentioned in the docs. So you can run queries with the understanding that it will be very fast, and make use of transaction functions where it makes sense. I.e. you can still treat Datomic Cloud as a “fully programmable database”
  • the supported way to run things on your local machine (i.e. during development, including using a REPL) is to have a test instance of Datomic Cloud, and using the proxy provided to access it from your dev machine (hence why Client API is used). This has downsides, as you are not always connected to a network, and have to pay the (minimal) cost to have an instance of Datomic Cloud running just for development, but I would guess that it wasn’t simply straightforward for Cognitect to port all features of Datomic Cloud to a free version that can be run locally

I think this is an acceptable trade-off.

I also get the feeling Cognitect are fully aware that it is not a great solution for everyone, and are looking at improving the situation, but they can’t commit to anything yet, as they are not sure what a potential solution might look like.