The Arjuna transaction processing system began life in the mid‐1980s as an academic research project to examine the use of object‐oriented techniques in the development of fault‐tolerant distributed systems. Thirty‐five years later, and available in open source form, it forms an integral part of various middleware products from Red Hat where it is used to provide ACID as well as non‐ACID transaction services. This journey from an academic to a commercial environment has been neither easy nor smooth but it has been interesting from many different perspectives. This article gives an overview of this journey, discusses the features of Arjuna that enables it to support a wide variety of transaction services and concludes by presenting lessons learned.