yada 2019-12-09

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

I know yada uses Aleph

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.

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

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

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

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

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

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.

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

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

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.

👍 1

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

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

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

Breaking change?

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

I was recommending Aleph as #1 choice

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

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

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

and I didn't realize Immutant was dead, too

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

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

He's happy to help mentor

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

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

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

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

yeah, that's what I believe

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

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

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

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

I don't know the release plans for Netty

Maybe there's not much to do?