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

I'm thrilled to see Prolog logic-engine concepts heavily contributing to Clojure's core.logic library[1].

Because Clojure plays so well with the JVM, having industry applications leveraging logic engines is becoming beautifully feasible.

[1] https://github.com/clojure/core.logic

core.logic hasn't really seen any updates in such a long time. I don't think it's maintained any more.

The plague of modern software engineering is "there are no updates, it must be unmaintained". This attitude makes tons of solid, old, working software seem "outdated" and creates a cultural momentum towards new, shiny, broken shit. The result is ecosystems like js. Maybe we should believe software can be complete?

You definitely get +1 for writing the most true comment I have read today. This also happens in the Common Lisp world: there are old libraries that are very solid and useful even if they have not been modified for a while.

Years ago, I thought of writing a science fiction story predicated on the idea that in the far future that the world would run on ancient software that was proved correct and made perfect by being debugged over the centuries.

I mostly agree but how can you distinguish between unmaintained and complete software ?

For example, OpenSSL is a very strong force behind what we call "internet", without something like OpenSSL we wouldn't have internet today. When heartbleed was found in OpenSSL the dynamic wasn't to retire OpenSSL and migrate to GnuTLS or something else, or even something new, but to patch OpenSSL. Why, because even though OpenSSL development is silent, we know that it IS maintained. If we find another heartbleed today, nobody will want to replace the entire cryptographic infrastructure of the internet, instead fix OpenSSL.

Another examples: zlib, SWI-Prolog, most BLAS implementations, some GCC backends, Concord (heuristic-based TSP solver), most parts of algo based libraries (CGAL, Eigen, GMP, GSL etc...) (of course these libraries are implementing new features, but there are some parts of codebase that didn't receive any commit for years)...

I think good signals to tell a package is complete: (1) there are no known critical bugs (2) if we found a critical bug today, we're reasonably sure we will get a fix in reasonable amount of time (3) project and project goals are well-documented (4) everything documented as goal is implemented i.e. there is no on-going development happening.

core.logic does have pretty clear maintenance commits when needed, so you are wrong there. They are just not many changes needed.

Yet there is a list of very useful features discussed in the repository that does not advance very quickly, mostly due to David Nolen being busy with other great work (clojurescript, om, etc.) lately.

I’m a heavy user of core.logic in my personal project, and I would like to see the project gain more powers; I just didn’t /need/ them yet. I’m thinking on dedicating some time to it. Perhaps you can too!

Clojure doesn't retroactively break old code like most modern languages.


Are you aware of any outstanding bugs or features that are missing? Lack of updates can sometimes mean that a library is complete (or nearly so).

Nafc 'Negation as failure constraint' is still labelled 'experimental', though I'm not familiar with the reasons behind that.

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