announcements

mpenet 2026-05-07T10:11:44.615799Z

Releasing https://github.com/mpenet/drip โ€” a transactional job queue for Clojure backed by your existing database (PostgreSQL, MariaDB, SQLite). No external services, no message brokers. Jobs enqueue inside your own DB transactions โ€” commit means the job is submitted, rollback means it disappears. That's it. - Transactional job insertion and atomic claiming - Priorities, scheduling, retries with exponential backoff - Unique job constraints, queue pause/resume - Per-kind retry policies and execution timeouts - Periodic jobs, outbox pattern - Virtual threads (Java 21+) - Web UI and CLI/TUI included ... and more https://github.com/mpenet/drip

๐ŸŽ‰ 16
flowthing 2026-05-07T10:13:48.625579Z

This is fantastic. I've been looking for something just like this. Definitely going to give it a try. ๐Ÿ‘

mpenet 2026-05-07T10:22:52.457759Z

I am eager to get some feedback, let me know if you hit rough edges

flowthing 2026-05-07T10:23:18.094409Z

It'll take a while before I get to it, but will do!

๐Ÿ‘ 1
msolli 2026-05-07T11:10:44.077279Z

๐Ÿ‘ Well done! Great docs, Web UI and CLI - I'm impressed. I've made https://github.com/msolli/proletarian/, which has more or less the same value proposition as Drip. It has fewer features and fewer dependencies but the same general shape. Nice to see more competition and choice in this space! It's good for the community and ecosystem.

mpenet 2026-05-07T11:12:21.960379Z

Hi! I had no idea about proletarian, I should have done my homework. I will definitely check it out. Thanks for the kind words.

msolli 2026-05-07T11:14:57.149119Z

It's good that you didn't, then you might not have made Drip! ๐Ÿ˜…

mpenet 2026-05-07T11:15:23.363269Z

my laundry list was basically https://riverqueue.com/#features (plus/minus some things). I shamelessly re-used their schema for pg basically

mpenet 2026-05-07T11:17:23.879639Z

I also implemented at least 3 versions of something quite similar at work.

tatut 2026-05-07T11:50:06.637449Z

this is great... something that many people make ad hoc implementations of in their projects, great to have a drop in library

Thomas Moerman 2026-05-07T13:11:16.123669Z

Cool. Looks like this shares some properties with https://docs.dbos.dev/?

mpenet 2026-05-07T13:11:51.791479Z

I'd say it's complimentary, dbos is a durable workflow execution engine afair

mpenet 2026-05-07T13:16:22.794309Z

In my context I often have some queue (drip like) that ends up being consumed out of band that will then cause scheduling of durable workflows, sometimes I have to wait some condition to be met to allow scheduling for instance. workflows are a different thing. For me they are about ensuring a unit of work will run to completion/failure, with possible interruptions for whatever reason (network, reboots etc), and they can take ages to run to completion potentially (ex deploy a vm, then transfer a multi tb volume on new host, etc etc). You can build a workflow engine on top of something like drip, but I don't think I would do it this way (folks in river did, but I don't agree with their approach).

mpenet 2026-05-07T13:16:52.161809Z

temporal and dbos are more related to each other

mpenet 2026-05-07T13:19:29.194349Z

A coworker recently started a temporal inspired lib implemented in clojure if you're interested: https://github.com/mping/intemporal

๐Ÿ‘€ 2
mpenet 2026-05-07T13:22:50.315829Z

Temporal is really impressive otherwise. If I could choose I would use that for the workflow execution part.

Thomas Moerman 2026-05-07T13:48:07.185519Z

Thinking about the outbox pattern as a mechanism for causing extra effects after some transaction was what led me to discovering Temporal and durable execution as a concept (and similar engines like dbos, restate, resonate). Thanks for the explanation and pointers, will take a closer look soon.

๐Ÿ‘ 1
Steven Lombardi 2026-05-07T18:43:51.780369Z

Nice work. Here's some more prior art that I've considered using in the past. Not exactly "drop in" or even Clojure native, but comes with a different set of tradeoffs. https://github.com/pgmq/pgmq

๐Ÿ™‡ 1
dnolen 2026-05-07T12:27:37.306689Z

https://clojurescript.org/news/2026-05-07-release

16
12
12
๐Ÿ†’ 9
๐Ÿ™ 6
๐Ÿ™๐Ÿผ 1
๐Ÿš€ 1
๐ŸŽ‰ 50
2026-05-07T15:16:04.772399Z

After 10 years, it's finally time (warning it's preliminary). https://github.com/day8/re-frame2

๐Ÿคฏ 6
๐Ÿ‘€ 6
๐Ÿคจ 6
2
โญ 4
2026-05-11T16:56:21.973249Z

i kind of wish that the spec was a single file i could copy into an agent without cloning. like a skill file? but that would be too big/disorganized for the repo source... im also intrigued by the build-in handling of queries/invalidation. query invalidation is a key part of frontend for me

Ovi Stoica 2026-05-11T17:59:08.694669Z

@thmorriss If you need re-frame query cache & invalidation you should look at https://github.com/shipclojure/re-frame-query Has support for that, infinite lists, polling & more

๐Ÿ‘ 1
Ovi Stoica 2026-05-08T10:01:24.301069Z

This is such a great read! If nothing else, just the {:doc :platform} initial map is huge I'm starting 04-views-and-frames now Currently it feels tha re-frame2 by default isn't aimed at other react wrappers compatibility, ex uix since views are expected to return hiccup and a view injects subscribe whereas in re-frame1 there would be some extra plumbing to get subscription reactivity, see https://github.com/pitch-io/uix/blob/master/core/src/uix/re_frame.cljs Note: I haven't finished reading the guides so this might be a misinformed opinion

2026-05-08T11:51:35.886899Z

@ovidiu.stoica1094 I've tried to keep the spec as general as possible but because of time constraints it has ended up a bit too biased towards Reagent and ClojureScript. But I have no doubt whatsoever that you could get an AI to bend the spec in another direction pretty easily. After all I want this to be the base for people to "Roll your own" ... even JS and Typescript ones. But I wouldn't do this just yet. There is still a bit of churn. Two more days should have it stable (famous last words) The reference implementation (Reagent) is already functional which means the specification is getting close to complete. My 20x max plan is coping a beating.

๐Ÿ‘ 2
2026-05-08T11:55:47.982009Z

@asier.galdos It's already worked. I have a working version. And only 7K lines of code :-) For context, the original re-frame was about 600 lines of code) plus poor tests. Mind you re-frame-2 includes an entire state machine implementation, routing, SSR, v good JVM integration, etc

๐Ÿ˜ข 1
Asier 2026-05-08T12:08:03.501019Z

Scary. Thanks!

chucklehead 2026-05-08T16:29:58.368209Z

Since this is a spec-driven, AI-focused rethink, you may want to look at things like Lemmafit and the underlying dafny-replay. It seems to me that the reframe model should be amenable to the same concept of small proven kernels for the state engine that would allow the developer to write invariants on the application state and the actual application state traces could be used for post hoc analysis/verification of application behavior against a spec similar to PObserve. https://midspiral.com/blog/introducing-lemmafit-a-verifier-in-the-ai-loop/ https://midspiral.com/blog/building-a-react-app-with-formally-verified-state/ https://github.com/metareflection/dafny-replay https://p-org.github.io/P/advanced/pobserve/pobserve/

2026-05-07T15:20:05.403999Z

"AI-oriented" does this mean there's no existing library?

2026-05-07T15:21:24.017929Z

looking at the repo, i think the answer is "yes". there's no library, merely a specification that each user's "AI" will now attempt to reimplement

2026-05-07T15:24:52.934549Z

There is no existing implementation, no. Soon.

2026-05-07T15:25:38.887309Z

I wouldn't burn tokens on it just yet.

๐Ÿ‘ 2
ag 2026-05-07T15:46:03.186429Z

Reminded me this https://www.youtube.com/watch?v=xE9W9Ghe4Jk > -- You wouldn't want to publish that. Wait, where are the docs? You don't even > have a readme. > -- I don't even have a repo. Congrats @mikethompson you have a repo and you have a readme. Seriously, I'm very excited.

2026-05-07T16:03:37.009289Z

README driven development has worked for me before. Let's see how we go.

๐Ÿค” 1
robert-stuttaford 2026-05-07T16:06:40.701509Z

any time Pratchett is quoted is a great time ๐Ÿ˜„

JAtkins 2026-05-07T16:32:31.261199Z

I think I see it. Iโ€™m sorta winging it like this for a zero + refx setup. Most of my initial time is setting up docs for the ai though lol. Making it REPL-able with next to no effort, testable from clj only, and adding some good utilities (like the ability to REPL record in a vector the values of a sub) is taking my time right now. But, I think it'll pay off

Asier 2026-05-07T20:31:50.704889Z

Love it. If this works my views on AI are gonna change drastically.

2026-05-09T13:17:17.124879Z

@ovidiu.stoica1094 working on Uix and Helix adaptors now

๐Ÿš€ 1