Fork me on GitHub
#yada
<
2019-12-09
>
ericnormand17:12:30

I am trying to determine which Clojure web server libraries are worth recommending to newcomers

ericnormand17:12:40

I know yada uses Aleph

ericnormand17:12:08

Zach Tellman has recently said that he's going to wrap up the open issues, call it Aleph 1.0, and step away from the project.

ericnormand17:12:23

He also said that further development will have to be done by a new maintainer.

ericnormand17:12:21

I was thinking that JUXT might step into that role since you use Aleph so much.

ericnormand17:12:45

Well, here's my question: do you still recommend Aleph, given the current status of the project?

malcolmsparks17:12:54

Good question. Without pre-announcing too much, we are working to decouple yada from manifold in the next major update.

malcolmsparks17:12:44

Now that Ring supports async (it didn't when yada started out) it is possible to support other async servers.

malcolmsparks17:12:56

The concept of a 'resource model' is still needed and missing in Ring, so getting to http compliance without something like yada is tricky for users.

dominicm17:12:23

Although we've not run into issues with Aleph so far. We've been quite happy with manifold overall.

ericnormand17:12:35

Ah, thanks. Any concerns about Jetty's performance or Websockets?

dominicm18:12:04

I think our love for Aleph came from how easy it was to do non blocking io. The new ring async still doesn't address this, and consumes a whole thread in order to process streamed responses. This is particularly expensive if you're streaming web sockets which are low traffic. With something like Aleph you should be able to handle way more simultaneous connections.

👍 4
dominicm18:12:45

I'm not sure if ring jetty has a WebSocket story now? Do you have to use a fork still to achieve that?

dominicm18:12:02

https://github.com/sunng87/ring-jetty9-adapter not a fork, but you have to go third party

malcolmsparks18:12:59

Talking with James Reeves last week, we'll have to wait for Ring 2 to get async responses (spoon fed content bodies)

dominicm19:12:29

Breaking change?

borkdude19:12:12

@ericnormand fwiw, we've been using aleph/yada in production for years and never had a problem with it

ericnormand19:12:47

I was recommending Aleph as #1 choice

ericnormand19:12:20

but I think it has to be more nuanced now that I've learned Zach is stepping away and JUXT isn't stepping in.

borkdude19:12:36

if Zach can't find a new maintainer, and JUXT won't do it, he could consider clj-commons

ericnormand19:12:40

who might step in? as in a largish company with interest

ericnormand19:12:13

and I didn't realize Immutant was dead, too

ericnormand19:12:39

ring jetty doesn't have all the features, but at least it is maintained

danielcompton19:12:59

I talked with Alexey at Strange Loop, and he's looking for someone to take over maintenance who is using it in production

danielcompton19:12:13

He's happy to help mentor

danielcompton19:12:20

We are using Aleph in prod, so it may end up being me 🙂

borkdude19:12:10

Here's a huge list of companies using Aleph: https://github.com/ztellman/aleph/issues/450

ericnormand19:12:34

and to be honest, I would still use it myself on new projects

dominicm19:12:15

I wouldn't be surprised if it's basically just done. Not sure.

ericnormand19:12:20

yeah, that's what I believe

ericnormand19:12:42

but it would be nice to know someone is backing it if something breaks

ericnormand19:12:25

I hear Immutant doesn't work on JDK12, for instance

ericnormand19:12:03

and as Netty is released and older versions stop getting fixes, Aleph will have to keep up

mccraigmccraig20:12:13

i don't think it's completely done... haven't had any issues on the server side yet, but ran into one a little while ago where i couldn't use aleph client because it doesn't support http/2 hpack

dominicm21:12:47

I don't know the release plans for Netty

dominicm21:12:54

Maybe there's not much to do?