clj-commons

2023-02-09T14:07:22.685429Z

I've opened an issue on meta about https://github.com/clj-commons/meta/issues/71. I'd love to hear y'alls thoughts.

slipset 2023-02-09T17:17:45.869499Z

Jonas also has Eastwood which is maintained under his repo, which might be a viable option for kibit as well

vemv 2023-02-09T17:22:03.889099Z

I'm not sure kibit has its place in the universe anymore (other than the very cool implementation details). One can always create custom linters with clj-kondo and to a lesser degree, Eastwood. Perhaps it's a more worthwhile investment to summarize what it does? e.g. a comparison table of its specific linters. Which remain unimplemented elsewhere?

seancorfield 2023-02-09T17:23:59.226129Z

Given cjl-kondo, I'm not sure Eastwood adds anything these days, to be honest. But I got the impression Kibit goes after a different category of things?

vemv 2023-02-09T17:24:49.595509Z

for the record, it does, else I would have stopped maintaining it

seancorfield 2023-02-09T17:25:40.625729Z

https://github.com/clj-commons/meta/issues/71#issuecomment-1424338506 is aligns with my sense of Kibit compared to the others so I guess I'm not imagining things.

seancorfield 2023-02-09T17:26:46.378069Z

To me, Eastwood and clj-kondo are direct competitors but Kibit is something else and it's valuable and I think more people would use it if its parsing was brought up to date which is what @nbtheduke is offering, I believe.

seancorfield 2023-02-09T17:27:37.793769Z

I use Eastwood on HoneySQL but that's purely historical -- I inherited that in 1.x and just never got around to replacing it with clj-kondo 🙂

lread 2023-02-09T17:31:05.673999Z

I rely on Eastwood to report on deprecated APIs in java libs. Very handy for that.

vemv 2023-02-09T17:33:10.267229Z

And reflection warnings on a very fine-grained manner. And more linters :)

➕ 1
vemv 2023-02-09T17:36:52.008529Z

The thing is that what kibit does could be implemented using kondo's tech, which has is very suitable given its speed and is particularly well-understood and interoperable (think clojure-lsp) There's no need to implement every kibit bit as an officially accepted clj-kondo linter, I believe. It has extension APIs. So there would be no need to clearly delimitate what a "linter" is - it's all very blurry. Much more practical to implement/choose whatever you deem necessary.

seancorfield 2023-02-09T17:39:46.074899Z

True, if Kibit could essentially be rebuilt on top of clj-kondo, I think that would be a great way forward -- since LSP/clj-kondo are so widely used now.

2023-02-09T18:32:09.015039Z

I've thought about doing that, to be honest. My issue is that writing clj-kondo hooks/lints is really cumbersome, you have to do all of the destructuring and checking yourself at each step: is the number of args N? is the second arg Y? is the third arg a map with x y and z? etc

2023-02-09T18:33:54.250359Z

Kibit's usage of core.logic to handle pattern matching on sexprs is really powerful and doesn't currently exist in the clj-kondo universe, in part due to the way clj-kondo (and rewrite-clj underneath) build their data

seancorfield 2023-02-09T18:34:22.560579Z

Ah, good point. And core.logic isn't compatible with sci at the moment, I guess?

2023-02-09T18:35:27.810589Z

I have an in-progress/abandoned pattern matching library (https://github.com/NoahTheDuke/spat) built specifically for clj-kondo's data shape, maybe this is a good reason to finish fleshing it out.

2023-02-09T18:37:05.793389Z

All of this to say, I think that until one of us steps up and actually does the hard work to translate the existing kibit linters to clj-kondo/eastwood, kibit still has a space in the clojure ecosystem and I am willing to do the maintenance work

👍🏻 1
vemv 2023-02-09T19:26:40.233529Z

Perhaps it would all start with making a comprehensive table of kibit-exclusive features (linters, if you will) As mentioned I'd be super happy for those to be implemented in clj-kondo, but if that task indeed feels too low-level, I'd be willing to facilitate its implementation in Eastwood. February would be great month to do so for me, and also I know @nbtheduke likes to hang out in the Eastwood issue tracker from time to time :) For the hammock hopefully!

❤️ 1
borkdude 2023-02-09T19:22:28.013839Z

It seems @danielcompton is still merging PRs over there so maybe it doesn't have to be transferred? Eastwood, jonase's other project, is also maintained by @vemv under that github account. I'm not against transferring it to clj-commons

danielcompton 2023-02-09T19:22:50.218269Z

I suggested opening the issue :)

👍 1
2023-02-09T19:25:41.112609Z

I'll email jonas and see if he wants to make me a maintainer which would solve the issue

2023-02-09T19:55:43.749039Z

He's responded that he's interested in transferring. Is there a voting process for y'all to decide to accept or not?