It takes a lot of time and effort to put together and maintain a complete Clojure environment. That’s why we’ve created Edge. Edge is intended for both professional and educational use, including students learning Clojure, educators, as well as professional Clojure programmers in small and large organisations.

1. Compared with other approaches

When starting new projects, days or weeks can be wasted learning how to assemble various libraries and tools. You can derive from previous projects and public examples, but that wastes time understanding which parts are relevant to you. Edge provides a generic base you can build upon, without any research or disentangling.

1.1. Compared to Templates

Templates provide an alternative way to start a project quickly, but you take the full burden of maintaining that template after generation. Edge allows you to update your project at any point. If a bug is fixed in Edge, you will receive that fix when you next update.

1.2. Compared with Libraries

Edge is easy to modify as needed, because its code is part of your project. Some frameworks are libraries, but this hinders changing them. Modifying a library is a complex process, requiring forking, deploying and dependency conflict resolution. This takes valuable time from working on your actual goal.

2. Features of Edge

2.1. Developer Ergonomics

A lot of investment has gone into Edge’s developer ergonomics. The goal was to create an environment combining the techniques from several projects. A sample of novel features:

  • Deep CIDER integration, e.g. cider-refresh configuration and automatic cljs jack-in

  • Console logs are filtered to warnings, errors and all logs from your project

  • Automatically link to servers when starting the system

  • Dynamically load dependencies into your REPL at runtime

Developing these features yourself is possible, but requires pulling together knowledge from many different areas: editor tooling, logback, classloaders, etc. Edge already has solutions to these problems, and makes them instantly available to anyone.

2.2. Modular

Many projects, even small ones, have a multi-service architecture. Edge allows your services to share common code as libraries in the same repo, which can be used for business logic or migration utilities.

Even in a single-service architecture, small libraries allow you to create well defined boundaries in your application. These boundaries have their own tests and documentation, this leads to simpler and more stable software.

2.3. Open Source

The complete system, including the Clojure language, the Java Virtual Machine on which it runs, the Clojure code within Edge and the numerous Clojure and Java libraries that are employed, are licensed with open-source licenses. This provides you will full flexibility over the Edge project, you can decide to fork the codebase at any point and go your own way.