Experiments in IDE Simplification

A cheveret desk is a small writing desk with a handful of small drawers. It includes a basket, possibly for scraps or to hold letters one intends to send out. The usage of the few features it has are up to the user. Lastly, the writing surface is tiny, preventing the users from overwhelming themselves with information from different stacks of paper surrounding them.

cheveret-desk

If image uploads to Wikipedia are to be believed, this is a cheveret desk.

I chose this name not because of anything specific to the cheveret desk — I’ve never even used one. I simply looked up “writing desk” imagining a smaller desk intended for writing letters, and found this little cutie. My intent was to capture a the spirit of a certain kind of user experience, and cheveret just happened to have a nice ring to it.

The user experience I had in mind?

cheveret-image

Cheveret opened in the folder where its source code is kept. The main source program, a Lua file, is open for editing. Its support library, consisting of a small amount of native code, is open in another tab.

This is Cheveret. Cheveret is a text editor using the Adwaita widget library from GNOME. Adwaita is a native toolkit, meaning that the actual presentation of applications is backed by a far more lightweight platform than a web browser, which has become the all-too common default for new projects like this.

This editor has virtually no features for authorship of text or code whatsoever — an intentional design decision made in stark contrast to other text editors aimed at programmers or writers alike. There are no features for smart linking of ideas, nor are there code completion and comprehension features.

Also unlike just about any other text editor out there, Cheveret defaults to using a proportional font for text entered in the editor, as opposed to the monospace one would find anywhere else1. Because this is a very unusual choice, I feel it is necessary to spend a good amount of time justifying the choice.

Consider your handwriting, when you write in English or another language with a similar alphabet. Do each of your letters take up the same amount of space? No. Consider major websites with large reader bases, or safety labels for food, or the UI for apps on your phone. Are they monospaced? No. Consider the human brain, and how the eyes read text. Do we read words one character at a time? No.

Proportional fonts have won out for a reason, and that’s because they look better. Good looks is something to be desired when it comes to something you read with your eyes.

Because of its proportional preference, Cheveret does not support space indentation; the tab key always inputs a tab character. This is not only for preference, but also because space characters in proportional text tend to be very thin. It’s much more difficult to ascertain the depth of indentation when using spaces in a proportional font. The other benefit to not supporting specific things is that the entire application becomes more opinionated.

An opinionated application has defaults that are specifically tuned to one happy path use case, often making it more difficult to pursue other paths. Sometimes, that can be very frustrating. Most other times, it’s freeing. It frees you, the user, from caring about details you’ll probably find irrelevant. You don’t spend valuable mental effort needing to make decisions that distract you from the task at hand.

Cheveret is highly opinionated in what it is, and also in what it isn’t. It has a file view displaying an entire tree of folders and files, but it doesn’t even let you create, move, or delete files. Those tasks can be done elsewhere. The only goal of this file pane is to let the user quickly jump between files relevant to the open project. Cheveret’s text editor is, too, opinionated. There is no auto-completion, no code suggestions, no syntax highlighting program code. All of those things distract from the text the user is supposed to be working on. There’s also no plugin API, and no mechanism for hooking into other text processing pipelines. If I want to preview text, or compile code, I’ll have other programs running separately that trigger when I save a file. More than good enough, and the advantage is that I’m not pestered while writing code for having code that isn’t complete, nor do I see some preview window thrashing between different scroll points as a renderer completes passes over my text.

Cheveret is an application that won’t pull your attention around with all sorts of debug or analysis or build tools ­— as far as I’m concerned, it’s just like using a small, cozy writing desk.


As of now, Cheveret is far from ready for a release. The code is salvaged from the previous project, with lots of stuff removed and not much added. The app is being developed very differently from other GNOME apps, and as such may not be able to benefit from the easy distribution methods normally available. Plus, it’s missing a lot of necessities like a tab overview or the ability to actually monitor a workspace for changes. Lots to do! It’ll be ready once it’s ready.

At least I now have the advantage of being able to write code in peace, without being distracted by noise irrelevant to the task at hand.


  1. That said, Cheveret does present text in what is called “numeric” mode, where numeric characters are all given the exact same width, allowing adjacent numbers to be aligned. Unlike most other alphabetical text, this kind of behaviour is generally expected when reading lots of numbers. That’s likely why GTK supports it in the first place. ↩︎