← Home

Open source update

A big thanks to Clojurists Together, Nubank, and other sponsors of my open source work! I realise that it’s a tough time for a lot of folks and businesses lately, and that sponsorships aren’t always easy 🙏

- Peter Taoussanis

2025 Sep - Oct

Hi everyone, hope you’ve all been well! 👋 Almost the end of another year, unbelievable 🫣 Note that some releases ran a bit late this period so were actually published in November, but I’m including them here since they’re part of my Sep-Oct tasks.

Recent work

(See here for all releases)

Sente

Sente provides an easy-to-use abstraction over WebSockets and AJAX to help write realtime web apps with Clj and Cljs.

Sente v1.21 is now out!

This is a major release with plenty of new features, performance improvements, reliability improvements, and a number of bug fixes. Big thanks to all contributors and testers! As usual please see the release notes for details. Some highlights include:

Tempel

Tempel is a new high-level data security framework for Clojure

After an extended release candidate period, Tempel v1 is finally out!

Tempel provides high-level crypto utils to help protect user data. It offers a coherent and opinionated API focused on helping with the toughest parts of actually using encryption in practice:

  • Understanding what keys you’ll need (algorithms, parameters, etc.).
  • Understanding how the various algorithms/schemes fit together (when and how to use hybrid schemes, etc.).
  • Maintaining best-practices over time (e.g. auto migrating from compromised algorithms, auto incrementing work factors, etc.).
  • Key management (key rotation, password resets, admin backups, etc.).

It includes extensive beginner-oriented documentation, docstrings, and error messages.

I’m proud of how Tempel came out, and my hope is that it might be a practical and approachable tool that goes beyond the usual “here are all these complicated low-level crypto utils, good luck!”.

There’s a 36 min demo video (36m) that showcases some if the main functionality.

Carmine

Carmine is a mature, idiomatic Redis for Clojure

Carmine v3.5.0 is out now, the first major release in >1 year.

This release includes:

It also includes the first publicly released (though experimental and undocumented!) next-gen Carmine v4 core. This is basically a complete rewrite of Carmine, using the latest Redis protocol - and incorporating tons of performance and flexibility improvements. This has been a very large and ongoing job, and there’s still plenty of work to do. But I now have the new core happily running in a couple production environments, so there’s definite forward progress.

BTW for folks that might not have been following- Redis itself has had a lot of really cool developments recently. The new dev team seems to be doing a great job and has been very productive re: new features and performance improvements. Salvatore (the original Redis author) is also actively involved again, and introduced a very useful new vector set type that’s a great fit for similarity searching against vectors produced by LLMs, etc.

Talk: Effective Open Source Maintenance Maintenance

So I’ve been actively doing Clojure open source now for almost 14 years (cue clichés about time flying). I’ve made some observations in that time that I think might be useful, so I recorded a talk on the subject.

The focus is on better understanding some of the emotional dynamics of doing (esp. prolonged) open source work. The talk’s directed at OSS users and includes actionable tips on how users can help reduce creator burnout in some small/simple ways.

Other stuff

Lots of other small stuff, including minor releases for Trove (modern structured logging facade for Clj/s), and http-kit (lightweight HTTP server+client).

And of course the usual support on GitHub and Slack, etc. 👍

Upcoming work

  • Want to focus on ensuring that all pre-existing work is in good shape as the year comes to a close. This’ll include updating libraries to sync dependencies, reviewing outstanding issues, updating docs and examples, etc.

  • Have some efficiency improvements planned for Nippy based on similar optimizations I made while implementing Sente’s new MessagePack implementation. Likewise, want to consider adding cross-platform support to Nippy for efficient binary Clj<->Cljs serialization. That’d be something for 2026, though I may start sketching out a prototype soon.

  • First steps toward a big cleanup of Encore to make it smaller and/or more modular. This’ll be the first step toward trying to improve Babashka support across more of my libs (esp. Telemere).