clj-commons

borkdude 2021-09-21T08:28:01.001100Z

This PR has been open for almost a month: https://github.com/clj-commons/ordered/pull/59 What can we do to speed up merging if the PR is considered OK? I don't think outside contributors will find clj-commons attractive to contribute if PRs are left hanging, that's what I'm slightly worried about.

borkdude 2021-09-21T08:28:47.002100Z

Full disclosure: I would like to see ordered well maintained since clj-yaml uses it and via that library ordered is used in #babashka, this is my personal interest. If I can do anything to help, let me know. /cc @plexus

slipset 2021-09-21T08:30:01.002500Z

I added you as a reviewer @borkdude

slipset 2021-09-21T08:30:22.003Z

And I totally agree, we shouldn’t let them hang.

borkdude 2021-09-21T08:31:33.003300Z

approved PR

slipset 2021-09-21T09:15:25.003500Z

merged

borkdude 2021-09-21T09:15:57.003700Z

awesome

slipset 2021-09-21T09:17:38.004Z

I should probs make this auto-deployable as well.

borkdude 2021-09-21T09:18:39.004400Z

That would be nice. I see its still using the flatland org, is that right?

slipset 2021-09-21T09:20:14.004900Z

gah! That makes it harder to make it auto-deployable 😕

slipset 2021-09-21T09:20:52.005600Z

(and if we were to change, we’d need to change it to io.github.clj-commons because of the clojars restriction 😕

borkdude 2021-09-21T09:21:22.006100Z

I'd be fine with that (or the com.github.clj-commons one, I don't understand the choice for io.*)

borkdude 2021-09-21T09:21:32.006300Z

we could just normalize every library to do this

slipset 2021-09-21T09:24:25.007100Z

No conscious choice on my side, I only remembered the io.github thing.

borkdude 2021-09-21T09:24:43.007300Z

yeah, not important I guess

slipset 2021-09-21T09:24:57.007600Z

gah, tests are failing.

borkdude 2021-09-21T09:25:45.007800Z

that's interesting

borkdude 2021-09-21T09:26:11.008Z

it seems those tests were failing for a while already

slipset 2021-09-21T09:26:30.008300Z

Yes, which is even more annoying.

borkdude 2021-09-21T09:27:02.008600Z

Do they run locally?

borkdude 2021-09-21T09:27:21.008900Z

I'll try it as well

borkdude 2021-09-21T09:27:42.009100Z

at least lein test works

borkdude 2021-09-21T09:28:14.009300Z

I can reproduce the error with lein with-profile +1.6 test

borkdude 2021-09-21T09:28:57.009800Z

probably this should be with-profiles plural

borkdude 2021-09-21T09:29:19.010Z

nope

borkdude 2021-09-21T09:30:53.010600Z

it seems the tests work from Clojure 1.8 onwards

borkdude 2021-09-21T09:31:05.011100Z

let's just drop support for older Clojure versions. people should just upgrade ;)

slipset 2021-09-21T09:31:27.011400Z

seems like some other discussion I’ve seen lately…

borkdude 2021-09-21T09:31:37.011600Z

you mean in rewrite-clj?

slipset 2021-09-21T09:31:49.011800Z

yup

borkdude 2021-09-21T09:32:31.012600Z

I don't think it's unreasonable to only go back one or two major versions. People can still use the old one.

borkdude 2021-09-21T09:32:46.012900Z

You shouldn't have to backport every damn single predicate in core ;)

borkdude 2021-09-21T09:33:43.013400Z

Also, nudging people to upgrade Clojure for newer features in libraries isn't a bad thing either I think

slipset 2021-09-21T09:37:37.013700Z

I believe there is a PR for this now.

slipset 2021-09-21T09:38:05.014Z

And I believe it was approved 🙂

borkdude 2021-09-21T09:39:21.014300Z

@slipset ah it seems the circleci config still has lein with-profile +1.7 test etc

slipset 2021-09-21T09:39:51.014700Z

D’oh, so Circle wasn’t running testall 😕

slipset 2021-09-21T09:40:48.014900Z

New commit 😕

borkdude 2021-09-21T09:41:14.015100Z

:)

plexus 2021-09-21T09:43:43.015300Z

thanks for the merge @borkdude!

🎉 1
borkdude 2021-09-21T09:43:59.015600Z

and @slipset :)

slipset 2021-09-21T09:44:34.016Z

and @plexus for actually doing the work 🙂

➕ 1
🙏🏻 1
lread 2021-09-21T12:52:45.019100Z

Heya, about rewrite-clj v1 and supporting old Clojure versions. Supporting back to v1.8 seems reasonable, yeah?

borkdude 2021-09-21T12:54:00.019700Z

if you ask me 1.9 is already reasonable enough, especially now that it's hosted under a different org which means people have to upgrade to a "different" lib anyway

borkdude 2021-09-21T12:54:14.019900Z

but I'm not against it

borkdude 2021-09-21T12:55:14.020300Z

just note that maintaining support for older clojure versions comes with ... more maintenance

borkdude 2021-09-21T12:55:45.020800Z

and upgrading clojure... is that really such a big deal? it's a poster child of stability

Alex Miller (Clojure team) 2021-09-21T12:58:47.022200Z

state of clojure data is useful for making decisions like this https://www.surveymonkey.com/results/SM-S2L8NR6K9/ Q18 shows 1.3% using Clojure 1.7.x or earlier and Clojure 1.8 use 6.4% (this is a multi-select question).

borkdude 2021-09-21T12:59:58.022900Z

1.10.x
94.02%2,203

1.9.0
11.65%273

1.8.0
6.36%149

1.7.0 or earlier
1.28%
Right.

borkdude 2021-09-21T13:02:57.024200Z

@alexmiller Perhaps an interesting question for the survey: what's preventing you from upgrading to the latest (except for intertia)

Alex Miller (Clojure team) 2021-09-21T13:07:39.027600Z

I think the answer is probably: nothing - they are supporting older for backwards compatibility. given how quickly people move to new versions, this is probably not an interesting enough question to include

👍 1
lread 2021-09-21T13:12:44.028Z

And maybe people who don't bother to upgrade to new versions of Clojure also don't bother to answer Clojure surveys.

Alex Miller (Clojure team) 2021-09-21T13:22:19.028200Z

but they do bother to update misc libs?

borkdude 2021-09-21T13:32:21.028400Z

btw isn't this a chicken/egg problem? people are using 1.8 because they want to support it, and we are looking at how many people are still using 1.8?

lread 2021-09-21T14:50:30.030300Z

Ha! The people using 1.8 are using it only to offer support for 1.8? Twisted! I like it!

lread 2021-09-23T21:47:12.079200Z

Thanks, I’m interested in the answer to that too!

lread 2021-09-21T13:04:19.025400Z

Thanks guys, that helps very much. I support back to 1.9 now but had some very strong interest from a user of rewrite-clj to support older versions. I agreed to back as far as 1.8.

👍 1
lread 2021-09-21T13:07:48.027800Z

I'll add this data to the issue! Muchos gracias for the chat.

slipset 2021-09-21T14:50:13.030200Z

FYI that one user is quite heavily invested in tooling, so I kind’a get his point. It would be a nuisance to have to upgrade your thing that’s been running for ages just because you upgraded your tooling.

borkdude 2021-09-21T14:51:08.030600Z

then don't upgrade the tooling? ;)

lread 2021-09-21T14:52:37.031900Z

That's a good question, if you are updating libs, why wouldn't you also update Clojure?

borkdude 2021-09-21T14:56:22.034500Z

But we will have the same issue when 1.next comes out with spec2.

slipset 2021-09-21T14:58:04.036200Z

I guess my use case could be that I have multiple projects that I maintain, and one of them is stuck on 1.8 for some reason (and I work on it rather seldomly), the others I keep current and my tooling as well. I’m not saying this is a very common situation, I’m just trying to find the examples.

borkdude 2021-09-21T14:58:37.036900Z

this comes back to the question: is there a real situation where upgrading clojure makes your old software crash?

borkdude 2021-09-21T14:59:10.037700Z

I mean, if your tooling pulls in newer clojure

slipset 2021-09-21T14:59:52.038600Z

There’s another aspect to it. At work, I from time to time have to interact with the javascript frontend sources. Every time I have to do yarn install and some times I have to install a new versjon of node and a new version of yarn. All I wanted to do was to get the frontend up and running.

slipset 2021-09-21T15:00:12.038900Z

The only thing I really wanted to do was yarn start

borkdude 2021-09-21T15:00:24.039200Z

let's not talk about yarn or node.

borkdude 2021-09-21T15:00:42.039800Z

completely different ecosystem

slipset 2021-09-21T15:00:58.040100Z

Fair, but my point being that you came here to do one thing, and then suddenly, because of reasons, you have to start upgrading stuff.

borkdude 2021-09-21T15:02:05.040800Z

The way I see it is that your tooling already upgraded Clojure for you (as their minimum requirement) and this should never break your old Clojure program

borkdude 2021-09-21T15:02:15.041100Z

so I would like to have real scenarios, not hypothetical ones

slipset 2021-09-21T15:03:06.042100Z

Then I apologise for not understanding the intricacies of tooling (which I probs should have understood)

lread 2021-09-21T15:04:44.043600Z

I think an example given was some tooling brought into the same process as your app. Your app is on an old version of Clojure but some library in the tooling requires a newer version of Clojure.

borkdude 2021-09-21T15:05:14.044200Z

I have encountered one such example in the past where someone tried to run clj-kondo in Light Table which for some reason was using clojure 1.8 (I hadn't looked into why it was locked on that)

borkdude 2021-09-21T15:05:48.044800Z

but perhaps that's a tooling problem: you should never be locked into one version of clojure because your tooling chooses that?

borkdude 2021-09-21T15:06:34.046100Z

The scenario that lread is describing should not be problematic: upgrading Clojure should "just work"

slipset 2021-09-21T15:06:49.046500Z

Sounds reasonable, but I would imagine (way out of my comfort zone) that stuff like nrepl middlewares and stuff need to run the same version as your project?

borkdude 2021-09-21T15:07:16.046900Z

Yes sure. But pulling in a newer Clojure should "just work" with your tooling. Why not?

lread 2021-09-21T15:09:17.048100Z

An irony for me is that rewrite-clj v0 did not care nearly as much about not making breaking changes as I have for rewrite-clj v1. simple_smile

lread 2021-09-21T15:15:40.049600Z

@alexmiller I had a quick look at support matrixes for Clojure core team lib builds. For example, https://build.clojure.org/job/core.cache-test-matrix/. They seem to cut off testing at Clojure v1.8, is that typically right?

Alex Miller (Clojure team) 2021-09-21T15:17:11.050600Z

that is what we do

Alex Miller (Clojure team) 2021-09-21T15:17:23.050800Z

I have declared it to be "right" :)

1
Alex Miller (Clojure team) 2021-09-21T15:17:52.051400Z

many libs also work with older versions, but we do not test those combos

Alex Miller (Clojure team) 2021-09-21T15:19:06.053100Z

the combination of libs x clojure versions x java versions x build history defines a quantity of disk space, which is finite on the box we are on

Alex Miller (Clojure team) 2021-09-21T15:19:46.053800Z

moving to a different disk is possible but is a fair amount of effort that I am trying to delay into the indefinite future

Alex Miller (Clojure team) 2021-09-21T15:21:02.055100Z

Clojure 1.8 came out 5.5 years ago, seems like a reasonably old time horizon to test

lread 2021-09-21T15:22:07.056Z

If a change to a core lib was discovered to have broken compat for Clojure < v1.8, would you consider that to be a problem?

Alex Miller (Clojure team) 2021-09-21T15:22:23.056300Z

no

Alex Miller (Clojure team) 2021-09-21T15:22:41.056700Z

I would tell you to lock to an older version of the lib if you need that

lread 2021-09-21T15:25:27.058700Z

Thanks, that helps!

Alex Miller (Clojure team) 2021-09-21T15:32:51.064400Z

you can "solve" this problem either by making it trivial to live in a reproducible past (see: Go) or by making it easy to move forward to the present by minimizing or eliminating breaking changes (Clojure)

👍 1
Alex Miller (Clojure team) 2021-09-21T15:22:09.056100Z

if you're curious, the CI jobs are generated (by some Clojure of course) from the data here: https://github.com/clojure/build.ci/blob/master/ci_data.clj

lread 2021-09-21T15:22:45.056900Z

Oh cool! Thanks!

lread 2021-09-21T15:24:19.058200Z

Thanks for a very interesting and civil discussion to all! I realize folks can have strong feelings on this topic.

borkdude 2021-09-21T15:25:32.059Z

Now we're making progress, perhaps also ask Alex's opinion on making a custom *assert* :P

borkdude 2021-09-21T15:27:10.060Z

The use case: a user is concerned that his tooling users disable *assert* so the error reports are becoming less readable. To circumvent this he wants to introduce a library custom assert which his tooling always forces to true.

Alex Miller (Clojure team) 2021-09-21T15:31:15.063700Z

I'm not sure why my opinion is relevant here, but assert is designed to be turned off. if you need something to always be on, it's not an assertion, it's data validation and doesn't need to be conditional.

borkdude 2021-09-21T15:31:57.064200Z

@alexmiller what about clojure.spec: this is also data validation (in part) and designed to be turned off in production (in some environments)?

borkdude 2021-09-21T15:33:21.065600Z

This is more like validation in development which can be turned off.

Alex Miller (Clojure team) 2021-09-21T15:34:03.066300Z

spec has its own assertion system because it had constraints that could not be satisfied by the existing one (completely compiling out the spec validation)

Alex Miller (Clojure team) 2021-09-21T15:34:58.066800Z

but the intent is the same - assert in dev, not in prod

👍 1
Alex Miller (Clojure team) 2021-09-21T15:42:47.073800Z

what problem are you trying to solve: error reports don't have enough info alternatives: • ask users to turn on assertions when sending reports • make assertions non-conditional • add a new flag for validation and default to on • ??? brainstorm a few more minutes and you might think of some more comparison criteria: • quality of error reports • performance in prod • configuration complexity • ??? brainstorm some more to compare, make a table: put the alternatives on top, put the comparison criteria on the left. fill out the table with the best data you have, do work to fill in unknown squares color squares based on how well they satisfy the criteria are two columns mostly the same? if so, come up with new criteria to differentiate them is some column mostly green? it's probably a good answer. are the not-green cells fatal? can they be mitigated?

👍 2
borkdude 2021-09-21T15:54:07.075400Z

This is helpful, I like this, although I already knew this from your ClojuTRE talk, it's good to see it again.

borkdude 2021-09-21T15:54:37.075600Z

It would be cool if issue trackers supported this

Alex Miller (Clojure team) 2021-09-21T15:56:13.075800Z

yeah, we've given up making the table anywhere but in a spreadsheet

borkdude 2021-09-21T15:57:05.076Z

Hammock ™️ , the JIRA / Github issues killer

borkdude 2021-09-21T15:57:11.076200Z

with built-in spread-sheets

Alex Miller (Clojure team) 2021-09-21T15:43:01.074200Z

^^ this is how we answer questions like this in the core team

Alex Miller (Clojure team) 2021-09-21T15:44:08.075200Z

it is of course, a process with cycles. you may go back to the problem and/or alternatives and/or comparison criteria as you learn more