The big breakthrough happened while trying to re-name some of the core classes of the framework. Naming is hard. Good API design is a lot about choosing what vocabulary your users will have to learn to talk to you. Naming things is a big decision, because everything else derives from that.

Finding appropriate names for these core classes forced me to step back and think about the concept of the framework itself.

Helium is built for simplicity and ease of use, it’s a framework that encourages you to build your app as a collection of self contained, re-usable components. I wanted the API to reflect that.

One analogy that kept coming to mind is that building apps should feel like assembling Lego™ blocks. I used to love building things with Lego™ when I was a kid, so I started to think about it it terms of software. While visualizing this idea and looking at my code, suddenly, all the pieces fell in place (pun intended).