Hacker News new | past | comments | ask | show | jobs | submit login

Free as in beer. Not free as in speech.

> Is it Open Source?

Datomic binaries are provided under the Apache 2 license which grants all the same rights to a work delivered in object form.

Datomic will continue to be developed at Nubank, where it is a critical piece of our infrastructure.




So...no, it is not open source. I wish they would just answer that in a straightforward way.

"No, the source is not available, and the product will continue to be developed by us, internally. However, binaries are provided..."


Yeah the answer in the page is a total meme. Kind of disappointing, since I like Datomic a piece of tech. :(


I find that answer confusing. I don't think I've ever seen binaries being licensed under Apache 2 without the relevant source code before.


It gives the licensee the ability to distribute the binary, use or include it in their products in the same way as an open-source product. It just merely prevents modification without decompiling (which i assume is not easy given it's clojure, not to mention obfuscation?). And presumably it makes it less likely someone would just produce a competing product if they should choose to re-monetize it?


Why would it prevent modification or decompiling?


Only due to difficulty, not by license.


Yeah, it's a complete bullshit move. Mongoose OS (an embedded iot Plattform not the db) does something similar. It's extremely weasely and doesn't instill trust at all.


Trust is not the same for everyone. One model of trust is: A trusts B to do C.

Nubank is releasing the binary permissively. You might want more, but this is not a breach of trust.

Datomic has been around for more than 10 years, so there is ample data to base expectations.


[flagged]


There is nothing wrong with saying "It is not open source but you can freely use the binaries". That is the same thing, but upfront about it, but this feels like open-source-washing.


Nothing wrong with that at all. But that's not what was said. Answering the question (that you posed to yourself in your own FAQ): "Is it Open Source?" by stating: "we've licensed the binary using an Open Source license" seems a bit disingenuous. A more matter-of-factly answer would have been: "No".


I saw Fabrice Bellard do it this year (MIT): The CPU version is released as binary code under the MIT license. The GPU version is commercial software. Please contact fabrice at bellard dot org for the exact terms.

https://bellard.org/ts_server/


> perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

Doesn't this mean, that, as soon as I (somehow) get hold of the source code, I can distribute it as I want?


Probably not, because the source is not a derivative. Having said that, if you decompile the binary I bet you could distribute that source.


That would be very ugly source, as Datomic is written in Clojure and AOT compiled to Java bytecode. Due to the architecture of Clojure (especially, the use of macros) it is not exactly possible to work backwards from JVM bytecode to anything that looks like the original source code. It's not like Java where a clever decompiler can exploit output patterns generated by the Java compiler to make reasonable guesses at the structure of the source code.

But this is all besides the point; Datomic is now free (as in beer) with a great license (Apache 2.0). You can use this amazing tool for free, and you have as much need to look at the source to do so as you might need to look at PostgreSQL's source.

Some of us have been hoping for this day since Datomic was first announced, but even as an insider (I have been working at NuBank NA for less than a year) I was stunned at the speed with which this decision was made and implemented.


> Due to the architecture of Clojure (especially, the use of macros) it is not exactly possible to work backwards from JVM bytecode to anything that looks like the original source code.

I mean, presumably if you run a Java decompiler over it you'll get perfectly-legible Java source code. Just Java source code that makes a lot of calls to methods defined in the Clojure stdlib.

I'm guessing it would look a lot like what an Objective-C or Swift program looks like when you throw it into a C decompiler: a lot of boilerplate for imperatively building stack-local data structure temporaries to be passed into runtime functions, but otherwise the same code you'd expect.

> But this is all besides the point; Datomic is now free (as in beer) with a great license (Apache 2.0). You can use this amazing tool for free, and you have as much need to look at the source to do so as you might need to look at PostgreSQL's source.

Personally, I don't want to use Datomic as a tool; I want to use Datomic as a bag of parts. I want to pilfer the major components and libraries within the Datomic codebase, reusing them inside other things. (You know how CockroachDB and Clickhouse both implemented PostgreSQL-syntax-compatible binary wire protocol in part by taking the parser.y file directly from Postgres's codebase? I want to do that kind of thing, with Datomic. And probably using some pieces of Neo4j and/or Apache BEAM at the same time.) I also want to study the data structures and algorithms used to implement Datomic, to better port the concepts used in Datomic to other databases.

If Datomic was a true FOSS project, doing all of that would be simple/easy. With just a binary, though, I can't do any of that.


Reverse engineering:

Some of the things that Clojure generates are valid bytecode for which there is no Java source code equivalent.

Reusing the pieces:

In general, Clojure works so well because it is all of a piece, with many decisions and subsystems working together. Datomic's source is the same way, you can't really consume just part of the elephant, even if you had the source code. Many things that Datomic does simply don't make sense at all out of context.


Maybe, rather than taking pieces out of Datomic to use elsewhere, I want to take pieces of other things and stick them inside Datomic :)


"distribute the Work [..] in Source [..] form"


They didn't license the source form to you, so still no.


I took that to mean the form provided by the authors - eg the "binary source"


There are already some open source alternatives to datomic. TerminusDB (https://github.com/terminusdb/terminusdb) for example is implemented in prolog (and Rust) so has the datalog variant query power that makes datomic so powerful. If you want free as in speech (thou I love free beer).


XTDB is also worth mentioning, especially since they’re on the HN front page with a v2 early access announcement. There are differences in how they do things. I can’t meaningfully comment on business usage of either or what the trade-offs between them are.

https://news.ycombinator.com/item?id=35733515




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: