December 25, 2023

Long-Term Funding, Update #6

In my previous Long-Term Funding update I said I would review and update of the "cookbooks" section and make another pass of "TBD" items in the "language" section.

I reviewed and updated the cookbooks for Files and Directories, Mathematics, Middleware, Parsing XML in Clojure, and Strings, bringing them all up to Clojure 1.11 (and testing the examples -- and fixing the broken ones).

For the Mathematics cookbook, that meant rewriting the content that previously used Java interop and/or math.numeric-tower to use the new-in-1.11 clojure.math namespace.

Several cookbooks got minor updates to take advantage of functions in clojure.core and clojure.string that have been added since Clojure 1.4, when most of the original material on clojure-doc was written.

I also went through all the Java documentation links and updated those to point to the Java 17 versions (they were mostly pointing at Java 7 previously!). These will get updated again once use of JDK 21 has become more widespread.

I've been slowly working my way through the "TBD" items in the various Language guides, including the Glossary, although some of them really need input from community members who have specialist knowledge in those areas. In particular, the Concurrency and Parallelism and Polymorphism guides still have a number of "TBD" items that I don't feel qualified to write! Volunteers welcome!

Thank you to @adham-omran for a PR that added the Date and Time cookbook and to @samhedin for a PR that added a section about adding Java code to Clojure projects to the cookbook.

Finally, I made a logo and a favicon for the site with my very limited artistic "talents"!

To wrap up the year of work on, I consider the Clojurists Together funding to have been a massive success. The site has been completely overhauled at this point, bringing it up to date with Clojure 1.11 and removing all the outdated (and now-duplicated) material that was originally missing from the official Clojure documentation. In addition, by raising the profile of in the community, contributions have increased with two new cookbooks added via Pull Requests and several other sections of the site either getting PRs or being updated by me in response to extensive feedback from the community (mostly on Slack).

Keeping the site updated now feels like a tractable problem and I'm hoping to find time in 2024 and beyond to add more content to the site, especially when Clojure 1.12 is released and there are a lot of enhancements to Java interop!


deps-new 0.6.0 was released with several documentation updates, a new :src-dirs option to make it easier to use deps-new as a library and use templates from the local file system, and a new :post-process-fn to make it possible to modify the generated project programmatically.


No new release yet but several documentation updates for the clojure.test-compatible version of Expectations.


HoneySQL 2.5.1103 was released with smarter quoting of entities, smarter handling of metadata in formatting, and new options to provide more control over both of those features.


next.jdbc 1.3.909 brings improved compatibility with for insert-multi! and adds a :schema-opts option to provide more control over schema conventions for datafy/nav. There have also been several documentation updates, in particular around how to use next.jdbc/plan and next.jdbc.sql/find-by-keys. The build.clj has been updated to use the :pom-data option introduced in 0.9.6, as a better example for the community.


clj-watson is a great tool for checking your dependencies for known security vulnerabilities. It's a wrapper around OWASP Dependency Check and NIST is requiring users of its NVD (National Vulnerability Database) to switch from using data feed downloads to a new API that requires a free key for access. The DependencyCheck library that clj-watson uses has been updated to use the new API, but it isn't backward compatible so clj-watson needed changes to use the new version of the library -- and to provide an easier way for users to specify their own NVD API key.

Although the clj-watson maintainer has moved on from Clojure, they've been receptive to my Pull Requests to update the documentation, update the library dependencies, add a new, optional properties file that users can provide to override defaults, as well as a new command line option to specify that file, if you don't want it on the classpath, and to update the DependencyCheck library and provide documentation on how to obtain an NVD API key and how to use it with clj-watson.

A v5.0.0 release of clj-watson has been made, with all these changes, and is available as a git dependency. A Pull Request is pending with the README updates.


Finally, the Contrib library has a new release, 1.1.103, which removes the dependency on org.clojure/tools.logging -- which in turn means that next.jdbc no longer depends on tools.logging, reducing the chance of conflicts for users of either library.

Tags: clojure expectations community jdbc honeysql clojurists together watson open source