Fork me on GitHub
#clojure
<
2021-12-14
>
Chae Cramb08:12:34

I came across this on Hacker News recently: “a great fit for when team size exceeds codebase size (though not so much the other way around)” (https://news.ycombinator.com/item?id=19527953). Not sure if I’m interpreting them correctly, as they also mention Scala and Python, but pretty sure this statement was about Clojure. Does this ring true with others? Clojure’s a better fit for large teams, or a least large in proportion to the size of codebase they are working on?

p-himik08:12:05

I fail to see why that would be the case. I myself have been working with Clojure solo on decently sized project for years. There are also a lot of big OSS libraries with 1-2 main contributors.

p-himik08:12:59

But to be fair, it's absolutely unclear how one would compare a team size to a code base size. Maybe all the code bases that I mentioned are tiny even when somehow compared to a single person. But even if trying to imagine the extreme, I still don't see how that would be the case. My hunch is that the author of the linked comment was thinking about types and how you can find usages of MyCoolClass throughout the whole project. Well, plenty has been said on that topic and it doesn't necessarily seem that types improve some aspects that are critical to huge code bases.

Chae Cramb08:12:15

That’s good to know thanks. I’m learning Clojure at the moment, primarily with the intention of using it for solo projects, so that quote surprised me a bit.

p-himik09:12:40

Don't listen to random singular quotes on the Internet. :) For every idea, you can find a quote that would support it - there's little merit in that.

vemv09:12:07

From what I've seen working in Clojure teams over the years is that as one scales one wants a more conservative flavor of Clojure, with a type-like facility (be it spec, malli, schema, w/e) and not too many clever constructs. The nice thing is that one can gradually get there, and with whatever tools you might find best!

bg09:12:33

From my personal experience Clojure scales just fine from 1 to 110 people. In other places they have a lot more engineers. Scaling teams has more to do with people processes than programming languages anyway, you just want your tech stack to get out of the way. Clojure excels at that without any doubt.

Marc O'Morain10:12:48

I think as companies scale from 10s to 100s of engineers, it's beneficial to have a statically typed language. It makes it easier for new developers to make changes confidently.

p-himik10:12:26

There have been studies on the matter of types. Many. The conclusion is still not clear.

☝️ 1
dgr16:12:52

@U0K592YDP, that’s certainly the consistent argument that people (most often static-typers) make about dynamically-typed languages. I don’t know that it’s really true, however, particularly if you’ve architected well and have tests and major data structures covered with something like clojure.spec. I’ve heard of large teams using dynamically-typed languages quite successfully for large projects.

amithgeorge11:12:08

The dummy project @h0bbit has https://clojurians.slack.com/archives/C03S1KBA2/p1639421728377400?thread_ts=1639345048.349400&amp;cid=C03S1KBA2 makes use of leningen's top level :exclusions key to https://github.com/vedang/clj-logging/blob/1266d543e78152f61138882ca619854e64f3879c/project.clj#L44, irrespective of how it may be pulled in transitively. Is there a way to achieve the same when using deps.edn . I noticed the ability to provide :override-deps in an alias. Will that work for this usecase?

Alex Miller (Clojure team)13:12:00

Deps does not have global exclusions

Alex Miller (Clojure team)13:12:56

But if a dep is declared at the top level, that is the version used

Alex Miller (Clojure team)13:12:16

Top level is special and always wins

💯 2
👍 1
noisesmith17:12:26

with both deps.edn and lein, if a library erroneosly bundles a log4j, its version can get used "by surprise"

noisesmith17:12:53

in the wild I've mainly seen this happen when libs use AOT / :gen-class

noisesmith18:12:32

on http://ask.clojure.org is there a good way to say "this is something people could help with on clojurians slack but it isn't really a clojure question per se"? - someone linked to a broken app they found on github, I'm sure with a bit of back and forth here we could get them going or at least let them know why the app is broken, but it doesn't seem like a productive usage of the ask app. for now I just flagged the question but that on its own doesn't seem helpful. https://ask.clojure.org/index.php/11400/could-locate-clojure-specinit-clojure-clojure-classpath

noisesmith18:12:03

maybe I'm hung up on stack overflow rules, where you could provide "here's a better place to get help" as a comment on a question, but that wouldn't be an appropriate answer

Alex Miller (Clojure team)18:12:20

seems like that would be a fine answer

Alex Miller (Clojure team)18:12:26

flagging is really for spam and stuff like that

noisesmith18:12:12

yeah, one of the main things I mentioned when I tried to answer on ask is that this is a really weird way to distribute an app and the setup is idiosyncratic...

noisesmith19:12:14

and then I realized that as far as actually solving the problem, it was going to be a discussion with the user (unless the answer is just "don't use this it's broken")

Alex Miller (Clojure team)19:12:46

ask is a good place for Q&A. slack is generally better for interactive debugging when you don't even understand what the problem is