Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

On a tangential note, I'm learning Clojure and kind of just getting started on using it.

I like it how its a Lisp, and ever since I've learned Common Lisp, I've been wanting to use Lisp at work for everyday projects, and Clojure seems to fit just perfectly well.

As with these new things you are always excited to explore further and see what's about to come next. After searching, I was not able to find anything on the Clojure roadmap anywhere on the internet. I understand that Clojure is largely an Cathedral kind of an open source project, largely developed in private at Cognitect and released to the world. But it was still a little strange to not see anything on Clojure's future plans. Sometimes you also see the Clojure repo on Github go without commits for weeks, for example the last commit as of today is July 4, 2018. Which is like strange for a programming language of this size.



I don't find that too surprising, Rich tends to let things bake internally (in his head and at Cognitect) for a while before releasing anything publicly for consumption and feedback.

Most of Clojure's current development is around tooling [1] and some changes to move clojure.spec out of alpha. I believe they want to accomplish this for 1.10, but I'm not sure where I remember hearing that.

Alex Miller has mentioned that Cognitect built and continues to work on a tool that tracks all of your functions with spec definitions and generatively tests them only when the function or one of its dependencies changes. This would be extremely helpful since generative testing can be expensive to run, especially if you want to generate huge amounts of test cases. It'd be nice to say "test all of my codebase's functions 10 million times" and then have that information stored locally with the code.

In Rich's "Effective Programs" talk [2] he outlines the "10x problems" that Clojure was targeted at solving. In it there are two 10x problems that weren't solved by Clojure: resource utilization and libraries. There's not much Clojure can do to solve resource utilization as it's dependent on the host (JVM), but the library problem (especially Clojure libraries with spec definitions) is solvable (though there seems to be some disagreement on whether only allowing growth in libraries in a practical).

Pure speculation: All of their tooling projects (spec, codec, tool.deps, and the above mentioned generative test runner/tracker) are going to come together in a tool that attempts solves the library dependency problem. Rich outlines a lot of his thinking about how to accomplish this in his "Spec-ulation" talk [3]. He wants Clojure to "become the first community to make [dependencies] great". I hope that we'll see more tools and guidance from the Clojure team on this soon (and maybe improved out-of-the-box error messages)!

[1] https://github.com/clojure/tools.deps.alpha [2] https://youtu.be/2V1FtfBDsLU?t=29m53s [3] https://www.youtube.com/watch?v=oyLBGkS5ICk


It's a journey. :) Do not expect "one grand tool" but as you've noted, all of these things are pointed in the same direction.


That's a better way to put it. Thanks Alex. I'm excited to see where we end up.


Clojure Spec is one of the newer developments in Clojure that is being worked on: https://clojure.org/about/spec

On the ClojureScript side there is also a lot of movement. I follow https://twitter.com/mfikes on Twitter to get a heartbeat.


> the last commit as of today is July 4, 2018

That's not terribly surprising. Clojure is incredibly stable. It's a pattern you'll see across the ecosystem. There are libraries that haven't seen a change in 2+ years which still see heavy usage and downloads. In that regard, it's unlike any other ecosystem I've seen. Don't let it dissuade you-- after a while, you'll get used to it and see it as a strength, and by comparison most other languages will seem insanely churny.


To be fair I think most of the OSS languages are Cathedrals. Golang recently had an uproar over dep (community lead initiative) vs vgo (core committer). Ruby seems similar. With the recent departure of Guido as BDFL I think Python is the exception.

The low number of commits is somewhat intentional in that they actively avoid providing too much functionality in core and relative to Go which has the might of Google backing it there's fewer people with hands on who are incentivised based on innovation. It would be nice to see more frequent integration of commits from the community but ¯\_(ツ)_/¯.


If it helps, the core team uses Atlassian JIRA [0] for issue tracking and Atlassian Confluence [1] for design and planning discussions.

[0] https://dev.clojure.org/jira/browse/CLJ

[1] https://dev.clojure.org/display/design/Home


I was just considering learning Clojure recently, what resources would you recommend?


Many people talked about reading the book "Clojure for the Brave and True", which I did. It's nice to begin with it for the first chapters and read the rest later, after some coding, in my opinion. For me, the best resource was the MOOC on Clojure available at https://moocfi.github.io/courses/2014/clojure/ You can do the exercises, have the system check your results, but don't get grades or any certificate of completion.

I didn't finish the course as I moved to Elixir, although I liked Clojure very much. Elixir is also functional, much better for newcomers, lots of support, people, documentation, examples, books, courses, growing very fast... And one doesn't need to wait several seconds to start the virtual machine.


It's a simple and gentle introduction, but surprisingly effective at slowly immersing you into the language to the point that you feel comfortable exploring on your own.


In addition to Clojure for the Brave and True that others have recommended, http://www.4clojure.com is a collection of bite sized problems where you fill in the blank to solve the problem. After solving a problem, go look at a few top users and compare against their solution.

When I was first getting into lisp/functional programming a few years ago I would find that after writing a 6-8+ line solution on some of the tougher problems, the top users would have a way of doing it in 1-2 either due to a standard library function I didn't know about or they just took a better approach overall.


If you already know a little Lisp, The Joy of Clojure is a very good book to start at.

But I went through a complete journey of reading ANSI Common Lisp, The Little Schemer, The Seasoned Schemer, On Lisp and various other scheme material on the internet.

So syntax and other Lisp related stuff wasn't the problem. The Joy of Clojure book showed the Clojure way of doing things really well.

If you have to start on absolute basics of Lisp, I'd recommend watching the SICP lectures and reading PG's ANSI Common Lisp book.


Clojure for the Brave and True by Daniel Higginbotham is a wonderful intro into the entire ecosystem (Leiningen, Clojure/lisps in general, Java interop, emacs, etc.). If you're already experienced with Lisps, you could probably start with The Joy of Clojure.


Getting Clojure (Russ Olsen), Clojure for the Brave and True (Daniel Higginbotham), Living Clojure (Carin Meier), and Programming Clojure (me, Stuart Halloway, Aaron Bedra) are the best intro books, in my opinion.


The Clojure Programming book, it's excellent both for beginners and advanced users (I've been using Clojure since 2013).

https://www.amazon.com/Clojure-Programming-Practical-Lisp-Wo...

A lot of tips and insight of how to do and not to do things in Clojure without too much hype. "Practical Lisp for the Java World" - the title does not lie :).


Clojure Programming is great, but is at this point pretty old. Thanks to the stability of Clojure, the language parts are largely still accurate, but it is missing features from the last several Clojure releases and the the evolution of the ecosystem outside the language.


Yes, I agree. Your book (Programming Clojure) is great at that and quite up-to-date I believe.


This is largely due to the core team being on and off vacation during the summer. :)


The core team also works on other parts of the core libs - so you'll see commits and releases in tools.deps.alpha, the clj installer, contrib libs, or in Datomic, which the core team also works on.


Just wanted to say thanks for making such awesome stuff! I've used clj/cljs/datomic on several projects over the years and it's been great.

The Clojure core team does not get anywhere close to the praise it deserves.


Thank you Alex, for the all the work over the years and brining us this beautiful piece of technology.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

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

Search: