Foreword
Humble beginnings
My first exposure with server side web development was probably around 2008, likely with ASP.NET if I recall it correctly. Soon I migrated to ASP.NET MVC which, at the time, felt like a saner and more productive tool for me. Those were my first baby steps using the MVC architecture and I was fairly happy with it.
Then, I discovered Ruby on Rails. It completely changed everything I knew not just about web development, but also about programming in general. It redefined what productivity and delight meant to me. I suddenly felt a newfound joy with programming as I never had before. It was all thanks to Ruby and Rails. I was in love.
Since then, it has been my go-to framework for rapid prototyping of websites. It's was a no-brainer. I could deliver them fast and iterate very quickly. The whole process was enjoyable, unlike with tools I've used before (like ASP.NET, for example). It was like living in the future.
Scaling Rails beyond prototypes
While Ruby on Rails was absolutely unbeatable at starting new projects quickly off the ground, it didn't take too long until I realized that the story was different when you had a larger scale codebase with a big team of developers working on it. If you've ever worked in a codebase like that you'll know what I'm talking about. The truth is, it's not easy to grow a Rails app beyond a prototype. Quite the opposite, it's a real challenge. Soon you'd realize that too much "magic" was actually a problem and that compilers and strong typing doesn't sound that bad anymore. I faced that problem firsthand in several companies and saw the struggle was real.
❤ Kotlin
My view on the problem was fairly "simple": "if only we had a type-safe alternative to Rails, with a bit less magic, that'd be sweet". Unfortunately, I've never found an answer to that.
The first time I tried Kotlin, I felt that same joy of programming that once sparked when I first tried Ruby. I was highly productive once again, but this time I had much more confidence on the code I was writing.
Kotlin grew very quickly in popularity in the Android ecossystem. There was this big need for a language more enjoyable (and less verbose) to work with than Java. I was immediately very bullish on it, but not just for Android. For any kind of application! Soon I started playing with it to build command line apps, games, webapps and even console emulators! I had a lot of fun doing so, however Rails was still unbeatable for web development since no equivalent alternative seemed to exist in the JVM ecossystem.
Enter Kales
Kales is an attempt the bring some of the most useful patterns, conventions and features implemented by the Ruby on Rails web framework to the Java/JVM/Kotlin world. I'd love for it to be seen not as a copy, but as a tribute. It is said that "imitation is the sincerest form of flattery" and I wholeheartedly agree.
This work would not be possible without the amazing work of the (literally) thousands of Rails contributors that helped shape the API and conventions behind that tool over the past 10+ years.
⎯ felipecsl