Rich Hickey on Datomic (2012) [video]
youtube.com
youtube.com
It would be nice if Cognitect could do even better with a Red Hat business model, selling support for an open source product. I don't know if that is plausible for Datomic or not. I suppose that's a function of how popular an open source version would be compared to the current version, and I can't even guess.
If Ions is successful enough that could be their profit source, allowing them to set standalone Datomic free.
Datomic looks neat from a distance, but not being open source means I'm probably not even going to look at it (since I wouldn't be able to use it in any case).
It seems to have a lot of what the latter has, as well as some features that it doesn't (e.g. it's bitemporal).
(I'm reading https://juxt.pro/crux/docs/faq.html but if there's anything you've seen that'd be super helpful)
>Datomic’s datom model provides a very granular and comprehensive interface for expressing novelty through the assertion and retraction of facts. Crux instead uses documents (i.e. schemaless EDN maps) which are atomically ingested and processed as groups of facts that correspond to top-level fields with each document. This design choice simplifies bitemporal indexing (i.e. the use of valid time + transaction time coordinates) whilst satisfying typical requirements and improving the ergonomics of integration with other document-oriented systems. Additionally, the ordering of fields using the same key in a document is naturally preserved and can be readily retrieved, whereas Datomic requires explicit modelling of order for cardinality-many attributes. The main downside of Crux’s document model is that re-transacting entire documents to update a single field can be considered inefficient, but this could be mitigated using lower-level compression techniques and content-addressable storage. Retractions in Crux are implicit and deleted documents are simply replaced with empty documents
So what this means in pratice is that in Datomic you don't really "have" an entity/document (this isn't entirely true but feel free to dig into the details https://docs.datomic.com/on-prem/entities.html) but rather a set of facts (rows/tuples) at any given time, or across time, generally gathered up under one id. You can query on one of those facts and get exactly that back, one or more specific facts. Crux has this ability to query parts/attributes of a document but in terms of updating its all or nothing. There are other, more niche, considerations. One example I can can cite is looking at an entity through time in Datomic can be alien at first whereas with Crux its just a document, but overall this is the biggest thing I have noticed.
Oh and Datomic is pretty well battle tested and has the full support of Cognitect behind it whereas Crux is a newer OSS product by Juxt. That is both a pro and con for both camps, just depends on your needs.
I also think GPL compliance is a looming major problem for organizations and most haven't realized it yet. We have seen a few folks try to monetize GPL compliance the last few years...netfilter, I'm looking at you.
And this is why many of us prefer open source software to free software.
There's a history here and important points of distinction. The OSI and FSF are separate organizations for a reason.
You seem to agree, though.
> Copyleft software compels certain things.
Yes, and that's what you were complaining about and why it seems that what you really prefer is permissive licenses over Copyleft licenses.
But open source software/licenses and free software/licenses are essentially identical sets (essentially all open source licenses, whether permissive or copyleft, are also free software licenses, and vice versa.) So preferring open source over free software is meaningless, they are the same thing.
> The OSI and FSF are separate organizations for a reason.
For political reasons that have nothing to do with what licenses meet the definitions each organization establishes.
You're both just choosing to be pedantic about it. I was just trying to be nice, but I guess that's not possible.
Also, from this wikipedia article here [1]: "The Free Software Foundation has related but distinct criteria for evaluating whether or not a license qualifies software as free software. Most free software licenses are also considered open-source software licenses." According to them, A does not always equal B here.
Sorry, I had no intention of being rude; I just dislike the misconception that permissive licenses are not Free Software, because it turns people who dislike copyleft against the whole concept.
I'd like to see folks get more educated about what their license options are and the implications of using them in general.
I keep working for customers where paying for tools is business as usual.
Having said that, I don't know what the solution is. A Red Hat model would be great, but how many companies have managed to replicate that success? The usual "commercial gives you these extra features" model means you need non-critical but nice-to-have features that people want to pay for but that doesn't cripple the open source version, not exactly ideal either. Having paid support and consulting as the primary income seems difficult too (eg RethinkDB). So, perhaps keeping it closed is the best route for them, I just wish there were better options. Oh well, I still get to enjoy the majority of Rich & team's work, so I'm not complaining.
> If Ions is successful enough that could be their profit source, allowing them to set standalone Datomic free.
That would be a great future.
As much as I like datomic, I'd prefer an implementation in a lower level language. However, I'm pretty sure there are alot of clojure experts out there pushing datomic to its limits.
edit: typo
I predict that AWS will buy Cognitect. I think they are aiming for that exit and is part of why Datomic Cloud is so closely integrated with DynamoDB and other AWS services.
https://www.oracle.com/technetwork/java/javase/community/jvm...
The state of documentation is a dealbreaker for me. I could not understand how to use Datomic just from docs. It lacked code snippets, examples of different ways to use it.
The ClojureDocs solved this in a beautiful way with crowd-sourced collection of use-cases. ClojureDocs API pages manage to seamlessly present the core principles along with user-contributed annotated code snippets. Learning from examples is most effective way of learning.
My favorite: https://clojuredocs.org/clojure.core/reduce
Maybe in a v0 release, most applications can get away with created & modified fields. Maybe the storage overhead of immutability scares people for some applications.
Maybe datomic is something that should be part of a powerful DB plugins ecosystem rather than its own database, or as an external audit log that can be written separately while keeping your main DB in SQL.
You also can’t really hire Datomic people in bulk so that knocks out anyone trying to scale their eng org.
I can see it working well for companies who are trying to do a lot with a small very bright staff, but that’s a small category. And even then it would only be places where the staff has consensus around immutability as a value.
Which... immutability, like many forms of strictness, is both a PITA and not actually that helpful unless you go all in.
It’s just a major commitment and for what benefit?
Maybe for a product where you need rewind everywhere.
Maybe for a product where you need extreme auditability.
I don’t know... what’s the killer feature that would make someone sacrifice everything else to use it?
Personally I think Datomic needs to be paired with a hosting system, debugging tools, basically some kind of integrated development environment that’s immutable-first in every respect.
Something like that would be powerfully differentiated.
I think the benefits have been pretty well laid out and are quite attractive, your restatement of them is just damnation with faint praise :)
> Maybe for a product where you need extreme auditability.
These are "nice to have"s or "wish I had it but it's too late now"s for a lot of products though