Interview with Rich Hickey creator of Clojure at GOTO Chicago 2013

★ Transcript Available Jump to transcript
Description: Rich Hickey is the creator of the Clojure programming language, a dialect of Lisp that runs on the Java Virtual Machine (JVM). He released Clojure to the Lisp mailing list and it gained popularity through word of mouth and online communities. Hickey believes that the fact that Clojure runs on the stable and well-established JVM has contributed to its success, as it allows users to try something new while still maintaining a connection to the technologies they are familiar with. Hickey also discusses the importance of simplicity and concision in programming languages and the role of language design in enabling programmers to solve problems more effectively.
Published: Dec 18, 2022

Transcript

Hi, it’s Mike again with UGtastic. I’m here again at the GOTO Conf in Chicago 2013. I’m sitting down with Rich Hickey. Rich, as you may know, is the creator of the Clojure programming language. It’s a Lisp dialect on the JVM. Thank you very much for taking the time to sit down with me. It’s a very busy conference, so I appreciate it. You’re welcome. So you created Clojure, and you released it to the Lisp mailing list, and yada, yada, yada. Eventually there’s user groups exploding, conferences being formed about people who are rabid fans of the language and the concepts and the ideas behind underpinning the language. As somebody who’s created this tool and then basically kind of released it to the world, what is it like or what has your experience been creating this tool and then seeing these various groups pop up when you didn’t have a marketing team, you didn’t have some evangelists out there ceding money for user groups to pop up? What has that been like for you? Well, it’s very incredible. It’s quite surprising. I think when I wrote Clojure, I definitely did it as a personal satisfaction project, and being a new language and a Lisp, I did not expect very many people to be interested at all. But I think Paul Graham’s book and essays and the success of Python and Ruby sort of seeded people with a desire for new languages and for Lisp that they could actually use for day-to-day work. So yeah, it was quite surprising. I put out a message to two dozen people, and it got put on Hacker News, and I got 20,000 hits the first day. It was really something with some interest in the idea of it. It was already there before Clojure was, I think. Well, and one of the things I find interesting is that it’s built on a pretty stable–like, the culture underneath Java and the JVM, people around that, that’s a pretty well-established community. It’s not too much exciting things going on, and people aren ‘t rabidly–well, not so many rabid, “I’m a Java developer”–I mean, people identify as Java, but they’re not as enthusiastic about it as they would say, “I’m a well-versed Clojure developer,” or even a Ruby developer. I just think it’s interesting that the hottest language right now is built on this really incredibly vanilla, boring platform. Has that been something that’s been a boon or a bust with working with getting support for people on the JVM? I think it’s quite critical to Clojure’s success, that it’s built on top of something that is an industry standard, and people are comfortable deploying in production. It’s one of the reasons why Clojure was–it was possible for Clojure to succeed, was the fact that it was possible for people to use in production and use at work. And I think that’s what helped drive people’s enthusiasm, was that they knew they had to work with the JVM, and now here was something that let them do something new, and yet remain connected to what they had been doing as opposed to sort of drop everything and try something completely different. So kind of having that boring base allows you to have a little bit of excitement and know that the underpinnings are nice and solid and they ‘re not going to– Yeah, well, they’re not just boring. They’re also quite capable and robust and well-tested, and there’s a lot of leverage in the libraries that exist there . So I wouldn’t want to belittle Java and the JVM’s role in Clojure. Well, boring wasn’t necessarily a negative statement. It’s the boring, “I know I can get up, and it’s going to be working, and I don’t have to worry about–” Yes, not exciting in the “you don’t want to be excited” way . But looking at another language and group, the Ruby group, where you don’t always know things are going to work, the libraries are always under a lot of churn. That’s not necessarily the most stable community. But what I see with the Clojure community is that much like the Ruby community that just grew up and became this rabid, very passionate, very vocal community, I see kind of a mirroring in the Clojure community where it seems like while Clojure is built on Java and it’s a very strong foundation, the community that came up into Java doesn’t seem to be– the community that seems to have migrated most to Clojure actually seems to be more the Ruby community, at least from my observations. So the numbers actually say that most, I would say, plural ity of Clojure programmers come from Java. Oh, really? But there are certainly people coming from everywhere, from Ruby and from Python and from Scala. But yeah, it’s a lot of people who are using Java. I mean, a lot of Java programmers are interested in other things. And now this lets them pursue that. So yeah, we definitely get a lot of Java programmers. Have you gone to and participated in any user groups? Have you ever tried to go not as rich-hicky, but just see how people are using or how they’re talking about Clojure? I mean, I’ve gone to groups. I’ve always given a talk, so I don’t think I’ve just been an attendee too often. Sometimes at the New York group I will just be an attendee. But yeah, it’s so exciting to see what people are doing and how big these groups are. And now it’s quite a lot going on. We have now three conferences a year, East Coast and West Coast and Europe. And the mailing list is gigantic. It’s 7,000 plus people. And the IRC is full of helpful people and very, very active . And I think the community has been great. There are people who are looking to help other people succeed. And that’s just Fed itself. And even very interesting projects. And the reason I probably have a Ruby bias and the reason I probably see more people from the Ruby community going to Clojure is because of just my local, what I see. And I mostly interacted with Ruby. And I was just inferring, though, that it seemed like a lot of the developers I know who have been doing Ruby are kind of bored with Ruby or they’re starting to see cracks in Ruby’s methodologies and how it’s implemented. And they’re starting to see some of the limitations. And they’re looking at Clojure as being an answer to that. Is there any truth in that? I’ve heard that you’re a vocal critic of Ruby, the language . Okay, then that’s… No, I couldn’t be because I really don’t have very much experience with Ruby at all. So I do see people migrating from Ruby. And they have their own stories about why they’ve done that . But I would let them speak for themselves about that. Okay. And with looking at the way the groups are forming, is there starting to be any… Actually, what I’d like to ask is how do you receive feedback from the community? Do you have kind of like the Linux model where you’re the benevolent dictator and you decide how new features are brought in? Is it feedback from the users? How do you go about working with the people who are out there using and espousing Clojure? Yeah, so it is a benevolent dictator model. But there are the mailing lists. There’s the big list, which is sort of everybody. And then there’s the developers list, which is somewhat smaller and more focused on moving forward and implementing patches and things like that. So it’s a more active group. And that’s the primary feedback mechanism. And then there’s a JIRA. And people can issue bug reports and enhancement requests. And we tend that. So that’s the process there. Now, I’m curious. The conferences, when you’re… Do you go through the Apple model of trying to hold back big releases until right before a conference? Or is it just new releases come out on a regular cycle? They come out on a regular cycle. I mean, if we’re close to one before a conference, we try to get it done. I mean, we rarely have it done and then wait. But we will often try to get something out beforehand so that people will have it to talk about. But it’s not coordinated with them specifically. Okay. And with dealing with the community, what has been surprising? I mean, when you launched it, I’m sure… You expected there to be conferences and user groups popping up for the language. But what is… Aside from that, what has been the most surprising aspect of the way people have started adopting and espousing? I think it’s just the size of it has been surprising. It’s got everything against it, right? It’s a Lisp. It’s functional. And being on the platform it’s on, it’s dynamic, which is sort of not in keeping with the other… the other entrance there. And so just the quantity of people that are interested has really been astounding. I mean, the groups are huge now and they’re all over the world. And so, yeah, I think that’s been the biggest surprise. I think I was super concerned about the tone of the community from the very beginning, that it’d be positive because, you know, there had been other Lisp communities that had struggled with that, and I think that had been a barrier to adoption. And I wanted to make sure that Closure had a clean slate there. And the thing that’s been really satisfying has been to see the entire community propel that forward because after a certain point, as one person, you can’t, you know, manage that. It has to be sort of in the fabric of the community. And I think a positive attitude is in the fabric of the community, and that just, you know, helps reinforce itself. Has it… And this is more of a question of becoming the center of this kind of Lisp revolution, for lack of a better term. Has that impacted you? Like, I know or I would see certain individuals that when they go to a conference, they may have gone from being just that person in the audience to now they’re a center of attention and they’re having to deal with that. And I just wonder if that’s something that’s impacted your ability to move in technical circles without being, like, a center for the people, like, “Oh, they’re too cheeky,” and then they kind of pounce on you. Has that been something that you’ve had to deal with or it’s been something that has either been a positive or a negative thing that you’ve had to… Well, I mean, there’s no denying that what happened with Closure has changed, you know, my life. You know, I wasn’t a public figure before Closure, and now, you know, there’s all this attention to Closure and the ability to, you know, speak at conferences and things like that. You know, I’ve tried to use that as an opportunity to talk about the ideas behind Closure and, you know, not really to sell it but to talk about what it’s about because I think those things were important to me in making it. But, no, it’s mostly opportunity. It’s certainly, you know, I don’t feel like people are pouncing on me or anything else. I mean, I really enjoy meeting people and being part of the conferences has let me meet a lot of great people and a lot of great speakers and learn a ton from other people, so it’s just been great. Yeah. Do you see… Do you see the Closure… Like I was saying, the Lisp revolution, do you think that Closure has a long way to evolve and it’s going to be working more with the community or is it something that’s kind of reaching a stable point and more going to be just minor changes? Where do you see… So, it’s interesting. It’s funny because as you kept saying Lisp, I wanted to respond by saying, you know, I don’t think Closure is sort of about a Lisp revolution more than it is about a way of thinking about making software simpler than it has been. I mean, that’s really what it’s about. On the flip side, being a Lisp, it should be small and most of the growth should come from libraries and so that’s what the emphasis has been and will continue to be. You know, it’s not like… It doesn’t serve anyone for me to pile on features in Cl osure and experiment with all kinds of stuff. Closure is at the bottom of a lot of people’s work at this point and so stability and a cautious incremental rate of change is the most important thing because you don’t want to upset everyone who’s made a decision and taken a risk to choose to use it. On the flip side, you don’t need to keep fiddling with the Lisp because it is a small thing and it is growable via libraries. And so that’s where the community has sort of just taken off. Closure is growing most in the library space, which is how it should be. The core should be a stable kernel and then everybody builds around it. And when I was seeing Lisp revolution, I really should have been talking more about functional because from what I’ve observed as I watch people who are adopting Lisp, excuse me, adopting Closure more in their workflow around me, I also see them picking up Emacs and I also see them dabbling more with Schema or some other, I’m drawing a blank here, but other more esoteric languages or different structures. I’m trying to say one of the logic languages that I’m just drawing a blank on. But it’s changing their, it seems to me that people who have adopted Closure either the way they adopt Closure helps them experience things in a new way or they’re already prone to experimenting and Closure’s helped them make a leap from a strictly OO style of programming. I do think it’s more in the people than Closure changing people. I think that it’s attracted people that are interested in ideas and that want to move forward, want to investigate functional programming, want to have better tools for managing concurrency and want to use it in their day job. But I think I’ve never actively marketed it with resources or not. I’ve never sold Closure. I’ve just talked about what it is and let the people with whom those ideas resonated show up. And that’s what’s been great because you didn’t twist anybody’s arm to use it and you don’t have to keep convincing them. It’s like, these people have chosen to be here. And I think that’s why they’re so enthusiastic because– It’s a self-selecting– Yeah, and I’m most impressed by the community being a community that values ideas. And you see it in the conferences. It’s not a lot of, you know, like, how do you do X or how do you do Y or here’s a new thing, you know, and here’s the details of the thing. There are a lot of talks about ideas and a lot of investigation. For instance, of logic languages, and core logic is an important part of Closure. And yeah, so that’s really great. I think it does attract people who are interested. Yeah, so it’s a useful gateway drug, a little bit, of getting people a chance to break away from preset notions of how to write programs, exposing them to new ideas, and then saying, “Okay, well, I’ve already seen “that I can do something useful “that’s different than what I’m used to doing. “Now let’s go check out some more stuff.” And it kind of breaks that ice. Right. You know, like I was saying, I know Vim users who are now completely dedicated to using Emacs because they started to do Closure, and then they became comfortable with the parentheses. So then they started to dig into Emacs Lisp, so they’re starting to change all their workflows there. And it’s been kind of interesting watching these individuals as they make their minds and as they make their migrations to new ideas. I think we are in the second phase of the kinds of users that we have, in that certainly the early couple of years were people who fundamentally were interested in some core aspect of it, either functional programming or Lisp. And now we are seeing people who just see someone that they respect being enthusiastic about it and for whom the entire thing is new, both the parentheses, the Lisp, the functional macros, like the whole thing is new. And they are really taking on something that’s novel and a lot of new ideas. And managing that second phase growth is something that the entire community needs to do because now the educational burden of Closure is much bigger. Right. When somebody’s got sort of none of the… Frequently you’d say of Closure, maybe it’s got four components to it, and most of the people who came to it knew two or maybe even three of those. Right. And now we’re getting people who have one or maybe zero. And so they need the community to help them get up to speed on sort of almost all of the aspects of Closure. You know, people using Closure who’ve never used a JVM or a Lisp or a functional programming language or Emacs. Right. You know, so that’s like a lot of novelty. Yeah, it’s a lot of new… What you just said was my experience coming. I have a .NET background. And then it’s been hard enough for me to get onto Vim and Ruby and all that, and then I’m watching the people that I work with already moving onto Closure, and then they’ve got a whole new tool chain that I don’t know, you know, from the ground up. And that’s maybe, you know, I’d like to kind of ask you a closing question, is for people who are just completely new, there’s just so many resources out there. Some of them are getting a little long in the tooth. You know, some blog posts are outdated and stuff. But is there… What would you recommend for somebody who’s just saying, “I want to learn Closure”? You know, what would you recommend as a certain workflow or a tool or which IDE? What would you recommend for somebody getting started if they were saying, “I’m going to do this thing”? Again, it depends a lot on what their background is. I certainly would say to investigate some of the books. There are a bunch of great books out now. A lot of the early books are in their second editions and have had revisions. So most of the books are current. And, you know, if you can get an opportunity to browse through them at a conference or a bookstore or something like that, you get a feel for it, I would pick sort of two that are in different spaces. And you can, you know, talk on the mailing list or an IRC for recommendations. That’s a great way to start. And then absolutely, you know, getting in touch with the community early is super important. You get on the mailing list, hop on the IRC, and just let people know you’re starting out and, you know … But everybody will have a different set of needs, you know. Their editor experience might be different. Their background might be different. And what they’re looking to accomplish might be different, which would also sort of shape the answer. So I don’t think there’s sort of a universal answer to getting started. But engage the community. Yeah. Just try to reach out. Yeah, people will have plenty of advice, sure, for that. And that’s what I said. I do think that this next phase of growth is on the community. Even when I started with Clojure, I mean, I didn’t have time, for instance, to explain a lot of the LISP aspects. Right. So a lot of the early adopters either had to know that or sort of get that on their own because I just was trying to tell the story of how Clojure was unique and couldn’t tell the story of LISP and sort of the fundamentals of some of it. And now, you know, the scope for somebody who knows nothing is bigger still. So that’s where the community comes in. And they’re already there. They’re there with a bunch of supportive tools and alternative documentation sites. And, you know, examples and – The coins. Yeah. And all kinds of exercises and things like that. Right. So there’s a lot of different things. And you pick what, you know, makes sense to you. But I’m quite proud of the community and how well they are receiving the newcomers and being positive and helping them, you know, succeed. Great. Well, thank you very much for taking the time to sit down. Sure. My pleasure. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you.