Ease Comes After

BSTRhino2 pts1 comments

Ease comes after • Easel

Skip to main content<br>While some people have been thriving,<br>not everyone has been finding Easel easy to learn.<br>Here is why that is and what we are doing about it.

Also keep reading to find out what's new in Easel in June 2026!

info<br>Easel is a programming language that makes your game multiplayer automatically!<br>Intrigued? Visit our home page to learn more.

Simple vs Easy​

One of the most famous talks in computer science is Simple Made Easy by Rich Hickey ,<br>the creator of the programming language Clojure.<br>In it, he explains that, "simple" and "easy" are not the same thing. He refers to the word origins of the two words:

"Simple" comes from the word "simplex" meaning "one fold". As opposed to "complex" which means "many folds".

"Easy" comes from the word "adjacens" meaning "lie near".

When something is "easy" , it means that it is lies near to something you already know. It is familiar .<br>When something is "simple" , it has nothing to do with what you already know or don't know.<br>Your code can be a tangled mess like the those wired earbuds in your pocket,<br>or it can be ordered concentric hexagons like web of a spider.<br>In either case, simple or complex is a property of the thing itself, not of your knowledge of it.

We want too much for things to be easy when we should want them to be simple ,<br>because for things to be easy they have to be familiar, and that means they cannot be much better than what we have now.

Easel is different​

Some people are trying Easel and finding it difficult. Why is that?

It's because it's different , which makes it unfamiliar.

But Easel is different for good reason. We are trying to innovate on the way games are made.<br>This is not always immediately apparent when you start using Easel - it is difficult to see the forest from the trees.<br>However, every now and again someone will come along and leave us a comment like this one:

I’ve been making notes for a few years now about all the best patterns and principles for designing complex systems and your language + engine more or less hits all the right notes.<br>Declarative state and reactivity, lexical lifetimes and ownership, etc. Really curious how you set it all up and what prior art was your primary inspiration.

This person gets it!<br>In our experience, Easel's differences let you express more sophisticated ideas with less code.<br>Moving Easel closer to what people are familiar with would lose what makes Easel powerful .<br>Unfortunately, this means people have to learn new ways of thinking when coming to Easel, and that is not easy.

The ease in Easel comes after you have learned its ways, not before.<br>But once you get there, you'll be delighted.<br>The other day we had the nicest quote from one of our Easel users, who said:

I keep being pleasantly surprised by how composable everything is, and how possible/easy it is to abstract things out

This is what we want for everyone who uses Easel - to reach the moment where you realize what it is all for.<br>What can we do to get more people to this point faster?

Can we make Easel easier?​

Our belief is that Easel cannot be made easier without it becoming less simple .<br>This is almost a self-fulfilling prophecy - if there were a way to make Easel easier without losing its simplicity,<br>we would have done it already.

As an example of this, let's look at what a standard entity looks like in Easel:

pub fn hero.Hero([owner]) {<br>use body=this<br>let radius=1<br>Body(pos=@(0, 0))<br>ImageSprite(@hero.svg)<br>PolygonCollider(shape=Circle(radius=), category=Category:Default)

This is 7 lines of code! Maybe you could inline the let radius and make it 6 lines. So 6-7 lines! 6-7 !<br>That's at least 6-7 things a beginner must learn. They just want to do 1 thing, why do they need to learn 6-7 things?<br>Can we reduce this number? Can we remove some of these lines and make it easier for beginners to get started?

Let's take the line use body=this. Is it really necessary?

info<br>If you are not familiar, use body=this says that this Hero has their own body.<br>Sometimes an entity does not have its own body. For example, if our Hero picks up a Shield,<br>the Shield entity would be attached to the Hero's body, and so it would say use body=hero instead of use body=this<br>because the Shield has no body of its own.

When you're making a basic game, an entity almost always has their own body.<br>This can make use body=this seem like nothing but an unnecessary stumbling block for beginners.<br>Why do I have to type this? What is this for? What is use? What is a body? What is this?<br>Why? Why? Whyyyyyyyy?

We are literally making the programming language, we have infinite power to make it do whatever we want,<br>so why not remove one extra stumbling block for beginners?<br>We could make the language assume use body=this until told otherwise, for example.<br>Advanced programmers would have to undo it when they wanted to do something more advanced,<br>but just like they tell autocorrect "no, thanks for the help but this time I didn't want to...

easel body easy simple make hero

Related Articles