I don’t know about the details behind the decisions for the new Wordpress interface, but I can tell you why I went for less JS and no framework like React, Ember or something like that.
The process of building Kirby 2 took forever and one reason for it was that I spent around 3 months of building the entire panel with Angular. It felt the right thing to do at that time. It was the time when Angular 1 was the hot shit. Everyone hyped it like crazy. I fell for it and was amazed how fast you can build things with it that are highly interactive.
But the deeper I got into it, the more I ran into Angular issues. You get sucked into the framework and you suddenly have to know more and more about it in order to move forward.
At some point I realized how much I’m subscribing to this monster if I really build the panel on top of it. It didn’t feel right anymore, even though I had achieved so much already. I realized that I’m not only making this huge decision for myself, but for everyone else working with Kirby. Everyone, who would join me with the development of Kirby in the future would need to know Angular. Every plugin developer would need to build their plugins on Angular.
Finally I decided to not take all the risks connected to that and to throw away my entire code and start from scratch.
Looking back it was the best decision I could have made. If you see how Angular changed since version one, I would have been forced to make a lot of new changes to be able to upgrade to Angular 2 and everyone else would have been required to do the same.
Angular is also quite a good example of a hyped framework that went downhill in popularity pretty quickly. Even if a JS framework might seem super popular today and you can find tons of developers happy to work with it, it might be a completely different story in a few months — not even speaking about years.
So I thought about longevity. What do I need to focus on, if I want to build something that can be around for the next couple years. In my 14 years of writing code for the web I never really subscribed to any particular framework and rather tried to focus on the basics. The basics of HTML, the basics of CSS, the basics of PHP and JavaScript. I always felt that there’s a higher chance of learning something that way, that lasts and which I can keep on using independently of what happens in hipster land. It also helped me to focus on building stuff instead of fighting about, which tool or language is better, faster or more beautiful.
The entire philosphy behind Kirby is based on that. The Kirby toolkit at the core of Kirby is a library, not a framework. You are free to use it if you want, but you don’t have to. You can use each of its parts individually or just replace them with your own basic PHP code if you want. The Kirby APIs are building blocks, not ready-made solutions. They are meant to empower you to build your own stuff in the way you understand and like it best. The content is stored in a format that does not lock you in with Kirby. You can always just grab it and read the text files with your own PHP code or reformat it to something different.
The idea of being locked in has always scared me as a developer and I don’t want to build a system that does exactly that.
That’s why the panel follows the same philosophy. Basic HTML and CSS at its core, enhanced with simple JavaScript. After all the JS overhead with Angular, I wanted it to be light-weight and easy to understand for beginners as well as experts. I wanted to build something that is solid now and can get better over time and adapt to improving browser APIs and more possibilities with vanilla JS and more fancy CSS techniques. I wanted to have something that doesn’t lock you in and I’m very happy with the result.
There are still places where it can all be simpler and cleaner. But having a solid foundation and being able to constantly improve that is the best starting point to get there.