alt.hn

12/27/2025 at 2:46:16 PM

Easel Turns One One year of building my own IDE in Clojure

https://blog.phronemophobic.com/easel-one-year.html

by todsacerdoti

1/1/2026 at 11:53:36 AM

This sounds very close to my dream IDE, I've always wanted to build a smalltalk + emacs like editor/ide in Clojure but never got around to it.

I wanted to try Easel but there were no instructions how. This is how I got it running:

  git clone git@github.com:phronmophobic/easel.git
  clj -X:deps prep
  clj
  # now in repl
  => ((requiring-resolve 'com.phronemophobic.easel/run))

by oxalorg

1/1/2026 at 12:57:00 PM

Amazing project!

>While the JVM solves lots of hard problems, it has one major weakness, the UI libraries provided by the JVM (Swing and JavaFX) are clunky and dated.

I also feel this; it's what puts me off writing GUI apps in Clojure. I have hope that natively compiled Clojure implementations like Jank that could interact with C or C++ libraries could help with this.

by Pelayu

1/1/2026 at 2:15:30 PM

what specifically did you have issues with?

i made a GUI with cljfx which uses JavaFX and I didnt really hit any issues (save for i have one bug on startup that ive had trouble ironing out). The app is snappy and feels as native as anything else

Ended with a very modular functional GUI program

the only thing i wasnt super happy about is that i couldnt package it as a simple .bin/.exe bc the jpackage system forces you into making an installer/application (its been a few years since, so its possible theres a graal native solution now)

i highly recommend cljfx. Its the opposite of clunky

by geokon

1/1/2026 at 2:57:57 PM

Same. I wish Webview would work with GraalVM native compilation.

by nha1

1/1/2026 at 7:50:52 PM

The words data and data oriented are thrown around a lot in the article. Can someone explain what is meant, exactly, and why existing IDEs miss the mark?

by jayd16

1/1/2026 at 10:44:49 PM

The best description of what I mean by data is https://www.infoq.com/presentations/Value-Values/.

> why existing IDEs miss the mark? There are definitely lots of IDEs that do cool things, but are missing one or more items from my wish list.

With respect to data orientation, most IDEs don't represent information as immutable data. If all internal state uses immutable data, it's much easier and safer to share. If everything is mutable, then sharing data is hard, which why most IDEs don't have pervasive sharing. As an example of an IDE that does provide access to data pervasively, but makes very different trade-offs than Easel, see https://gtoolkit.com/.

Using an IDE where all the tools take data and share data has dramatically changed my workflow. You can sort of get this feeling when you pipe together a bunch of shell commands `find ... | grep ... | tee ... | nc ... | etc...`. However, I think 1) sharing data rather than strings and 2) having a 2D graphical user interface is a big upgrade from piping shell commands.

by phronmophobic

1/1/2026 at 8:26:17 PM

Data oriented in clojure slang means modeling things in data structures like hashmaps and clojure sets as opposed to defining classes and types. The language encourages you to do it and provides a lot of built-in functions to work with them.

So it must have tools save, manipulate and visualize conveniently (pretty printing, folding etc) the values of vars that contain nested maps, sequences, sets, etc.

Existing clojure IDEs like CIDER for emacs or Calva for VSCode do that too, and it is a must have to have a nice experience with the language

by dimitar

1/1/2026 at 3:20:02 PM

Awesome work! I like the idea of being able to quickly make little tools in your IDE.

Coincidentally, lately I have been thinking of making an IDE using something like Theia or CodeMirror but am holding off because of time for my other projects.

by bobajeff

1/1/2026 at 6:18:04 PM

A bunch of this stuff is already there in Windows and in Visual Studio. It has been for decades.

But it’s legacy tech. Nobody actually cares about IPC to this degree. I suspect because nobody’s mental model works to this level of abstraction and who the hell is going to waste time doing all the plumbing.

Kudos for suffering on JVM I guess. Some people have a higher pain threshold.

Ideal IDE? As long as I have a reflow oven I’m not complaining.

by pallar

1/1/2026 at 3:39:53 PM

Excellent work. Now please partner with a software-focused UI/UX designer. To make a great product it takes a village.

by mrcwinn

1/1/2026 at 10:46:30 PM

Will do!

by phronmophobic

1/1/2026 at 3:39:19 PM

This is really cool, but begs the question: is the ideal IDE actually just a window manager with strong component coupling?

by hresvelgr

1/1/2026 at 10:32:14 PM

I did consider that. I think it's possible, but there are a few challenges:

- It's much harder for components in separate processes to share data efficiently

- Window managers tend to be OS dependent. I want something that is cross-platform

- Coordinating components in separate, asynchronous processes is hard

- Working with OS window APIs is more annoying than writing a layout library

by phronmophobic

1/1/2026 at 3:48:45 PM

This is what I keep coming back to when I am building a little tui manager for my coding assistants + terminal + git worktree manager.

I keep telling myself that if everyone just used tmux or a good emulator they could manage the tabs and layouts, but then I tell myself I just want this to be a tiling window manager as an distraction free OS for development, give me nothing but a terminal and an assistant.

Thanks for the write up OP, I've been going back and forth on whether or not I want to build something just for myself or spend time doing it for potentially other use cases. I keep coming back to that I need to dog food the shit out of this before I show it to anyone.

by kami23

1/1/2026 at 6:14:54 PM

Injecteur Dépendance Environnement

Where tools are dependencies and the system composes them together to create a sum much greater than the parts.

by adityaathalye

12/28/2025 at 5:43:18 AM

Hey, this is absolutely amazing

by sroerick