In early 2011, a client approached me with a request for a custom solution to create HTML newsletters. It should be simple, cheap, and they needed it the next day. What sounded like a terrible project back then – and still does today – turned into a success story that lasts already for 10 years and has nothing to do with email newsletters.
I wrote a little PHP script that split custom syntax in text files into variables and injected those into a simple template engine. The input: plain text. The result: monstrous, table-based HTML for newsletters.
It felt like a breeze of fresh air after years of building big, database-driven systems. I was pretty sure the client would hate it. They loved it. It was simple, it was fast. They used NotePad and Filezilla and pumped out dozens of newsletter issues for thousands of customers.
A few weeks later, friends needed a website for their new design studio. I pitched the idea to extend the concept of that newsletter tool for their portfolio. Every project would get its own folder with the same kind of text file. Throw in some images and you’re done. They showed me how they organized their projects on their file server and I tried to stick to their file naming scheme as closely as possible. It all matched like a puzzle. They really enjoyed the effortless way to update their portfolio, and I was blown away by the possibilities of such a simple piece of code. The ideas around the concept grew, and they sent me their first client who wanted a similar site. The very first version of Kirby was born.
I wasn’t sure what to make of this new side project. I was doing client work, and at the same time running a bookmark service called Zootool. With more than 100,000 users, Zootool was successful on the outside. But it was a money grave and I saw countless open-source projects fail because of the same dilemma: Not enough time and not enough financial stability for the maintainer to keep it going. I wasn’t ready for yet another time and/or money grave.
I was a big fan of Shaun Inman – a designer and self-taught developer from the US. He was the creator of a fantastic little self-hosted analytics tool called Mint and an RSS reader called Fever. The idea of selling neatly packaged web apps seemed really appealing but wasn’t very common. He sold his apps for $30 per license and seemed to be quite successful with this approach.
So I spent the rest of 2011 building more early Kirby projects and testing the system with roughly 100 beta testers. I created a simple logo and a website and tried to figure out how to sell this thing online – wondering if anyone would ever buy it.
While I got a lot of positive reviews from beta testers (some of them still frequent Kirby users 10 years later), I also received exactly the kind of feedback I dreaded so much: Why would anybody pay for Kirby, when there are so many open-source CMSs out there?
My favourite support email arrived shortly after the launch:
Is it true that I have to pay for Kirby?
If yes, you just lost a customer!
I should have framed this.
Kirby launched on January 9th, 2012. I abused the Zootool Twitter account to promote it a bit and sent out a newsletter to the beta testers, but that was all the launch marketing I could afford. Twitter worked really well at that point and Kirby managed to get quite some decent coverage. It seemed to hit a nerve at a time when systems started to get more and more complex. The performance in combination with the simple setup and easy to sync local and production environments were getting a lot of attention.
Despite the sceptics, Kirby made €600 in its first months and €14.000 in its first year. Not enough to be called a raving financial success, but definitely enough to justify some extra time and keep it going.
While Shaun Inman kept the source code for his apps behind closed doors, I wanted the same transparency open-source projects offered. Therefore, I put the entire source code for Kirby on Github. Seemingly madness. Why would anyone pay for it, when they can simply download it? The first versions of Kirby even came without a license check. But it worked. There were always enough customers who understood the principle of investing in enjoyable software. This principle still works for us today and has generated a very loyal customer base.
When Kirby launched, it was entirely built to be administrated on the file system. There was no web-based admin interface. You had to create folders and text files manually. The first sites were portfolios, personal blogs and a couple smaller company websites, but without an interface, Kirby was pretty useless for less technical people.
Our beta testers had asked for an interface plenty of times, and requests grew louder after the launch. So I pushed the first Panel version quite a bit and released it just 10 days after v1.0.
The first version of the Panel was simple. Users could edit site info and define fields for different page types with blueprints. Files for each page where shown in a simple list. User accounts were hardcoded. But it worked and opened Kirby to a larger audience.
In June 2012, I received one of the first code contributions for Kirby. One of our users submitted a way to load plugins from folders in the plugins directory instead of adding individual plugins as single PHP files. His name was Lukas, and he was quite good at PHP. He turned up with more and more contributions, issues and comments over the following weeks and months, and I was impressed how well the open-source principle worked despite the commercial model.
I learned a bit later that this guy was 15 at the time. You just have to love the internet sometimes. Lukas quickly became a constant in the Kirby community. Does the name sound familiar?
With a growing community and more customers, the demand for documentation and support also grew. It's one thing that has not changed in 10 years. Documentation is everything. Never underestimate the effect of good docs. We invest a lot of time in our documentation and support, and see it not just as a service for our users, but also as a marketing tool.
The very first effort to provide better docs for Kirby 1 was the famous cheat sheet. Today, I cannot believe I really created it in InDesign and published it as a PDF. It later turned into our reference … which is just slightly more extensive than that PDF.
How do you collect feedback and offer support for a brand new file-based CMS? Stupid question! You build a file-based forum of course.
The first forum launched in May 2012 and ran for almost 3 years. The code was shoehorned into a plugin and had weird hacks all over the place. The folder system was pretty straight forward though:
Authentication was handled through Twitter. Over the years, thousands of threads and posts were created and it held up quite nicely. But it missed a lot of essential community features. There was no notification system, no proper way to see new replies or any other form of activity.
I was really impressed by the performance of the file system and pleased by that first forum version. After all, my focus was on Kirby and not the forum itself. I never questioned the effects on the community. Conversations weren’t really working well and overall engagement was pretty poor.
When we switched from our self-made mess to Discourse in 2015, the community really took off. Support requests via email were instantly cut in half. It’s sometimes not very clever to build your own tools, when your focus should be on your main product.
With a growing community and growing attention, feature requests and ideas came more frequently. The typical growing pains emerged. The first version was pretty rough around the edges. The Panel had limited possibilities. Support took more time than anticipated and juggling client projects became harder every day.
Fortunately, Kirby started to generate more revenue and so I decided to hire the first freelancer to help me with the website, docs and support. In March 2014, Sascha Lack joined me and did an amazing job with the website, while I was able to focus on the development for Kirby 2. Sascha was one of the first Kirby customers and the developer of two popular themes (baseblog and smart projects) for Kirby 1. It was great to have a true community member on board.
Despite Sascha's help, it took months to finish version 2. I decided to rewrite large parts from scratch and especially the Panel turned into an entirely different system. Feedback can be a blessing and a curse, and trying to meet expectations with such a major new version meant a lot of pressure. The new version took quite a long time, but finally launched on October 7th, 2014.
The new Panel was still a very traditional web app. Views were completely server-rendered and navigation was sped up with Ajax requests. Good old jQuery helped with all kinds of interactive features. What started quite simple, blew up into a pretty unmanageable monster over the years.
With Kirby 2, the capabilities of the system rose to a completely different level and the old pricing model didn’t seem fitting any more. Instead of the former €30 general license, we introduced two new tiers: A personal license for €19 and a professional license for €79.
We expected a backlash because of the changed prices, but the feedback was very positive overall.
v2 brought more users, more demand for support and more community activity. Ditching our self-made, self-hosted forum was inevitable, and Discourse seemed like the right alternative at that point.
It was fantastic to benefit from all the features Discourse offered. The community grew steadily, technical support requests via email dropped despite the growing activity and users started to help each other. We should have done this a lot earlier, but you are always smarter in hindsight.
Two folks stood out more and more: Texnixe and Lukas.
Texnixe is the alter ego of Sonja Broda: A technical writer and developer from Mainz, Germany. She had built a couple Kirby projects over the years and started to help out other users with their technical questions. Her answers were always friendly, always focused on practical solutions, always very proficient. Her reply rate was off the charts. She often answered questions long before I even had a chance to look at them.
Lukas Bestle was the same guy who was always present on GitHub and had contributed his very first improvement in June 2012. He knew Kirby inside out by now and already started his own business after finishing school when others still tried to figure out what to do with their lives.
I was blown away by their professionalism at a point when they contributed all the answers and solutions on a voluntary basis. The forum benefited massively from their support and it became a logical next step to hire them both.
While Sonja is still the heart and soul of the forum, docs and Kosmos, Lukas shifted more towards core work later and is now deeply involved in our CI setup, security and backend development.
With a bigger community, you need merch. It's the obvious next step. 🤷♂️ After looking at various services with huge markups, we found a pretty affordable shirt printer in Berlin that was a better fit for our tight budget.
We started collecting pre-orders and printed the first batch of roughly 100 shirts. One day, a huge box arrived in our small apartment.
The shirts looked amazing. We added self-made tags with a K stamp and hexagonal paper cutter my wife had given me for Christmas. We had a huge Excel list with all the pre-orders from all around the world, and we packaged and shipped them manually.
It was a hell lot of work. Some shirts never arrived at their destination. Some packages took more than a month. While I'd never do it again, it was also a lot of fun.
More and more work for v2 piled up. We didn't have a proper CI workflow and tests back in those days, and every release was an adventure. It got clear that we need to invest more in a professional setup. Nico was another frequent member of the community, who had built some very impressive projects with Kirby. I asked him to help us out with frontend work for the Panel and other parts of the system. Over the years we had endless experimental coding sessions together and built some really cool things that sometimes even ended up in releases 😄
While I started as a professional designer, I lost more and more track of the design world with my focus on programming. I discovered Fabian’s design work through his Kirby projects and instantly liked his style. It was an obvious choice to ask him to help me out. He developed a new color system for us and worked extensively on the website for Kirby 3.
Sonja found tons of interesting community projects through her moderation work in the forum. It was a shame that it all got lost in there and that there wasn't a better platform to highlight those projects. That's how the idea to start a regular newsletter emerged.
Sonja turned Kosmos into way more than just a Kirby community newsletter. Every month, she surprises us again with super interesting design and development resources. With more than 60 issues, this newsletter has become an integral part of Kirby.
After 5 years of balancing client work and Kirby, I was finally able to put all the focus on Kirby and leave all my clients behind. Not an easy step after 15 years of freelancing, but a necessary step for Kirby.
Kirby 2 was in a difficult situation at this point. We had to fight quite a lot of technical debt. The frontend of the Panel gave us many headaches and the lack of proper tests made it extremely challenging to move forward with new features.
It became clear that we were on the path to v3 and needed a big refactoring round. This would take months to finish and we wanted to get our users involved as early as possible. At the same time, our budget was still tight and we were looking for a way to finance this next step.
As a big fan of Kai Brach's Offscreen magazine, I found it very inspiring how he started a crowd funding campaign to fund the new version of his magazine. As a benefit for his backers, he offered a glimpse behind the scenes and got them involved in every part of the process to create the new magazine.
This model seemed perfect for us as well. We started a microsite where we introduced our plans and packages. The concept was simple. You could either just follow our work or already buy a license for Kirby 3 in advance. Both options would give you access to a private Slack group, where we would show our progress, invite you to exclusive live streams, discuss features and more. It wasn't clear at all how successful this would be. My expectations weren't too high. Is this even interesting at all? But almost 500 people signed up, which totally blew us away.
The Slack server turned into a very vibrant group, and discussions there were extremely helpful.
The development took forever and got us into one or the other crisis along the way. But we had full support of our backers. Not just financially, but especially motivationally.
After announcing Kirby Next in Summer 2017, everyone was waiting for the new version. We expected to get it out there in early 2018, but it turned into our vaporware horror story. By the beginning of the new year we were not even half done. While we made amazing progress in the first months, we ran into one conceptional problem after the other.
Sales dropped. Why would you buy a v2 license when v3 was just around the corner? But it wasn't around the corner. Not even close.
The crowdfunding budget shrinked and shrinked. We tried to communicate openly, but it didn't help much. It was a tough year, and the pressure was extremely high. While the Kirby Next group was one of the best things that ever happened to us, the way we announced Kirby Next and the plans for v3 were one of our biggest mistakes.
On the upside, I was able to run a bunch of really great Kirby workshops, as side events for Marc Thiele's Beyond Tellerrand conferences in Munich, Düsseldorf and Berlin.
Those led to various private and public workshops in the following years, such as the one in Nottingham at New Adventures Conference in 2020.
Then one day, we received an image from Net magazine. Their CMS survey went really well for us. We will not question their scientific methods.
We finally made it. On February 5th, 2019 we released Kirby 3 after almost two years of work.
We are still incredibly proud of this release, as it catapulted us into an entirely new league. We were able to leave our technical debt behind and professionalise our setup and workflows in ways that we still profit from today.
The jump wasn't easy for our users. There were quite a few breaking changes and necessary steps to upgrade existing projects. Maybe because of the Kirby Next campaign or maybe because we have the best community in the world, the feedback was again overwhelmingly positive.
We changed our pricing model once again. After very insightful discussions with our supporters, we decided to remove personal licenses. Unfortunately, they were abused time and again over the years, and caused more financial damage instead of helping us move forward. We increased the regular price to €99, which is still the same price we offer today.
We also moved our shop from Fastspring to Paddle. A more modern checkout experience was urgently needed and Paddle turned out to be a great choice.
The idea to finally meet IRL circulated in the community for a while. The Kirby Next community made hilarious, half-serious plans to meet in a castle or giant villa in Italy.
In 2019, Florian Kosiol contacted me and offered to host the first ever Kirby conference at the 3st digital offices in Mainz, Germany. It got more and more serious and in autumn 2019, Sonja and I met Florian and his colleagues in Mainz to make proper plans. It all looked really nice, and the 3st team was amazing. We started selling tickets, organized speakers, booked hotel rooms and catering. With KeyCDN and Uberspace, we found two fantastic sponsoring partners, and were fully prepared for the first conference on March 21st, 2020. You might already know what happened next. But let's move on in chronological order.
Over the years, we had plenty of contributors and translators. Some submit a single PR. Some help out more often. We are always grateful for voluntary contributions, and don't take them for granted at all in a paid project like Kirby.
One day, Ahmet appeared on GitHub. He started to help us reproduce and track down bugs, created all sorts of bug fix PRs, started to build small enhancements and additions and finally full blown features. He wrote tests for everything he built, translated the interface to Turkish, followed all our standards, discussed concepts and was just a dream contributor. The timing wasn't perfect and there was no budget for another freelancer for a couple months. He just kept going although we were not able to pay him at this point. We were finally able to hire him at the beginning of 2020. He's just another lovely example how the best team mates emerge from the community. If it goes on like this, we will never need a hiring process.
We always offered free trials for Kirby. We want you to be convinced before you buy a license. But installing a local version isn't a 5-minute process for everyone – especially if you are not a developer.
We had been thinking about creating a demo server for a long time, but never really found the time. In late 2019, Lukas and I made a concept together how we could run such a demo in a very practical way. Lukas built a really cool demo manager that creates new Kirby instances on demand and discards them after an hour. I built a little theme with different demo sites to show various aspects of the Panel in the best way. It's one of those projects that always fall behind in our priority list, but once it was online, it really helped to move Kirby forward. More than 30,000 demos have been created since.
In February, Covid started to spread in Europe and while we were still optimistic that we would meet soon, the numbers rose and in early March we finally decided to cancel the event to keep everyone safe.
The community once more showed how amazing they truly are. We got nothing but warm support and offers to help although we had to cancel on such short notice.
I just talked to Florian a few weeks ago and 3st digital is still on board with the venue. As soon as the situation is safe enough, we will try again.
The private Kirby Next Slack group had been a huge success and kept active long after the launch of Kirby 3. But we didn't know how to transition to a public group for a long time. Slack didn't work anymore. It's just not very community-friendly and going for paid plans with 500+ members was way out of our budget. We discussed various options with our Next supporters and tried different platforms. We got quite used to Slack's features and nothing felt good enough. But we finally decided to jump to Discord. Especially the lack of threads was super painful in the beginning. Our group has gotten so used to them.
Once again, our community didn't let us down and most of the active members moved with us. After a short acclimatisation period, Discord was as active Slack had been before and lots of new faces showed up, which gave the sworn-in group quite some new drive. In hindsight, I'm really happy that we made this transition. We were afraid that the quality of discussions would go down or activity would decrease with more public conversations, but the opposite is the case. We couldn't be happier with the general tone and the warm welcoming group in there.
The move to Discord gave us a bit of a boost and another long-term pain point was the way we collected feedback. We had a GitHub repo called ideas. We used the issues feature of that repo to collect all kinds of feature requests and ideas and let people vote with emoji reactions. To keep it short: it was a mess. With roughly 400 issues there was absolutely no chance to get the bigger picture. It was hard to sort by those reactions and almost impossible to prioritize ideas and requests.
One day, I landed on a new feedback platform called Nolt and quite liked the look of it. It wasn't one of those monster tools with endless options and a massive interface. Just a simple way to submit ideas and vote for existing ones. We decided to give it a try and it instantly worked out. It has filled up with posts in no time and we never got so much valuable feedback in such an easily digestable way.
To convert requests into a pretty decent roadmap is also quite nice.
The private live streams for the Kirby Next supporters really started to grow on me. Plans for a YouTube channel had been lying around in the drawer for a long time. But it still took yet another year until we finally opened our own YouTube channel and I started to record the first videos. Kris from the design studio Florian Karsten helped me with a little logo animation and the first thumbnail designs. I tried to get into a weekly uploading schedule, which worked for quite a while until the pandemic lockdowns started and home schooling broke my streak. New videos are planned for this year!
In December 2020, we released 3.5 with our brand new blocks and layout editors. A major milestone for editors.
With all the pressure on the launch of Kirby 3.0, the final version of the v3 website was rather rushed and hacked together in many places. We also didn't invest a lot to refactor it afterwards and it started to get quite ugly under the hood.
We could all feel that because we really shied away from keeping it updated, which was not good. The website and especially the docs are essential for our business, and so we really had to do something about it.
After the 3.5 release, we decided to make a website sprint and release a new site in late January, early February 2021. Well, we finally finished it in April. But we all agreed that it was worth it and it finally feels great again to keep it updated.
Within just two months, we hit three different milestones by accident.
The number of PRs is a great benchmark for the consistency and quality that we managed to get into our workflow after Kirby 2. I think it's the number I'm most proud of. The team is doing an amazing job here.
I was suprised, how quickly the YouTube channel started to grow. Those are "just" instruction videos, but the feedback for them is still very positive and the number of subscribers is steadily going up. Yep, I know. I need to record new videos.
Discord is a success story and I wish we had started that server earlier. It has changed the dynamics in the community a lot.
In November, we released 3.6. It's our latest big release and introduced a new architecture update for the Panel for the coming years. With Fiber, we moved a lot of logic back to the server and simplified our Vue frontend significantly. It's our effort to keep Kirby 3 healthy, stable and fast.
Maybe because of the milestones, maybe because 2021 was a tough year because of the pandemic: It felt right to collect some more achievements. It often gets lost how much you really move forward as a team. We learned along our way that tiny consistent steps are the most effective way for us. But those tiny steps are sometimes harder to see when you don't keep track of them.
Here we are in 2022, 10 years after Kirby 1 launched. Back then, I had absolutely no expectations, no long-term plans. I was just winging that launch. A weird product name, a rough logo, a rough website, a rough first version. I honestly thought: If it works it works, if not I wouldn't be surprised.
It worked and it still does. We are not a unicorn, not the next multi-billion dollar business. We've always been working with the money and resources we had as good and fast as we can. Our goal is, to be free and independent. To work on something that we all love and that our customers love.
Our community has grown into a group that often feels like good old friends. We meet online and have great discussions, sometimes heated debates, but always with respect. We share funny stories and sad stories and talk about coding and design, about work and life and everything else.
I am deeply grateful for this beautiful group of people that formed around Kirby. I will never take this for granted.
Today, we have long-term plans. Kirby is a long-term project. Those are just the first 10 years of hopefully many more decades to come. The are more than enough ideas and plans. We hope you join us along the way.
We'd love to hear your Kirby stories from the last 10 years. Share your memories in our #10 channel on Discord
Thank you for 10 wonderful years!
Bastian and the entire Kirby team