Fork me on GitHub

Maven Central Build Status Test Status Coverage Lines Grade Total alerts


This project was born, several years ago, as the classic “kitchen sink” of stuff from other projects that was deemed of being reusable. Sometimes it grew in a disordered way, other times it was reviewed and cleaned up accurately. It contains different sort of things: from simple stuff such as a TimeProvider that can be mocked (for time-based tests), to type safe Maps (following advice of Joshua Bloch); up to some more structured things such an extensible Finder to manipulate queries from a generic data source; a facility for working with the DCI (Data, Context and Interactions) architectural pattern; a simple MessageBus suitable for using the Publish and Subscribe pattern inside an application.

There is also some really exotic stuff, such as small implementation of collaborative Actors (working, but designed basically for didactic purposes). Actually this whole project is often used in Java classes to show things that are reasonably contextualized in a real-world scenario (the core parts of this project are used by working pet projects; something is also part of industrial project). There is good stuff and some strange stuff - in general an attitude of this project is to also try things in a different way than the standard.

TheseFoolishThings supports JDK 8, but requires JDK 11 or 17 to be compiled.

To guess whether the project is in a reasonably stable phase look at it version number: if it contains ALPHA it is undergoing a wild refactoring (which usually happens when it is updated to a major JDK release). Other than this, most of the Javadoc contains tags:

  • experimental: to designate things that are really raw and might go away soon, or perhaps mutate dramatically;
  • draft: to designate things that are going to stabilise;
  • stable: to designate things with a certain degree of maturity.

In the past Clirr was used to enforce backward compatibility of stable things, but it was dropped after the JDK 8 upgrade. Up to now it hasn’t been replaced by another tool yet. So perhaps at the moment TheseFoolishThings might be of your interest more for inspiration than for an effective use.

TheseFoolishThings is licensed with the Apache license.


General information

Maven dependency

Since most modules can be used independently, Maven dependency information is available in their specific documentation.

Sources, issue tracker and continuous integration

The primary source repository is on Bitbucket, a secondary repository (synchronized in real time) is available on GitHub.

To checkout sources from Bitbucket:

> git clone

To checkout sources from GitHub:

> git clone

The issue tracker is hosted on the Atlassian Jira Cloud:

The continuous integration is available at:

There are also other quality analysis tools available:

API documentation

Aggregate Javadoc