Ben Croker – Plugin Development as a Business
How did you decide to become a plugin developer?
PutYourLightsOn was the third business I founded, so it took me a while to get there. And even since then – 2007 – it’s taken time to get where I am today, it’s been a long learning experience.
After college, I spent a long time traveling and volunteering abroad. I never had an interest in high-tech or working for corporations. I knew I wanted to do something involving education, so my first business was an educational software company.
Back then, we were using Flash, which turned out to be something that didn't stick around very long. But it was wonderful as a technology and offered endless possibilities, especially for interactive experiences.
That company lasted about two years and didn't grow the way we wanted, so I pivoted it to a different business, also in education but this time language learning, which also lasted around two years. Then the Dotcom bubble burst, the economy switched quite quickly, and we ended up selling that business. That was not our intention; we weren't trying to exit quickly, but we saw that we weren't able to grow it the way we wanted to. So PutYourLightsOn was my third entrepreneurial adventure.
Why did you choose PHP for your business?
Throughout those years, I was developing software using PHP primarily. From the early days, I noticed how easy and how portable PHP was. There were certainly other programming languages, other frameworks and content management systems around, but they were difficult to get set up with, and certain web hosts wouldn't host them. You could run PHP everywhere, and that was the appeal initially.
I went through a series of different technologies, I mentioned Flash already, but even then I was using PHP behind the scenes. I was using the CodeIgniter framework, which was ahead of its time in terms of what it offered and its architecture. Scaling software up is always challenging, which was always the challenge for me with PHP. But it has matured a lot since then and we now have something that is very scalable and works wonderfully.
I quickly discovered that whenever you want to build software or a web application, almost nine times out of ten there will be some content component to it. And you can either choose to build the entire system for managing that yourself or you can reach for a content management system. So after adopting CodeIgniter, I naturally discovered ExpressionEngine, as EllisLab was the company that developed both. That was at around ExpressionEngine version 1.5 and I started building plugins for it shortly after that. We were using ExpressionEngine to power the language-learning site, for managing all of the user content and user accounts. We had different language schools worldwide as users so that they could manage everything about their language schools through the system. So I quickly realized that I needed to build plugins – they were called "add-ons" for ExpressionEngine – to add this extra functionality. The natural progression from there was to start building add-ons that I thought other people could use. I also started distributing those, initially on my own website and later on devot-ee, which is an add-on store for ExpressionEngine.
That’s a journey!
Yeah, it took me a while to figure out what I wanted, I had to go through those two businesses to figure it out. I see that as a recurring theme – that the third time you get it right. The first time, you go through the process of figuring out what it is that you want to build; the second time, you iterate on that process and cut through that fat; and the third time you figure out what it really is. For me, it was the right size and the right scope, and now my focus is purely on Craft CMS and plugin development. At PutYourLightsOn, we develop free open-source plugins, commercial plugins and custom-built plugins. In addition to that, we offer training for Craft CMS and plugin development, both in-person and via videos. And I also teach at a local university in Graz. It sounds like a lot, but over the past couple of years, I've really been able to focus on the things I feel passionate about.
How do you come up with ideas for your plugins? Do you want to solve your problems or look at the market and develop what it needs?
I think I can say that every plugin I've developed has come from either scratching my own itch or identifying a use-case that comes up again and again, for myself primarily. I don't think it would make sense to develop a plugin for a problem space that I'm not familiar with.
I'm interested in many things in tech, like I'm interested in performance and security. Those on their own are huge topics, but more interesting is how they relate to Craft specifically. The ideas come from these interests and the need for performance and security in a CMS. Whether I pursue those ideas is one thing, and whether I decide to build a plugin and distribute it is another question. I have created lots of plugins over the years that have been either for myself or my clients and that have not seen the light of day or have not been distributed to anybody else. I'm very selective and particular about which plugins become distributed plugins and which plugins go on to become commercial plugins because they require very different levels of support and maintenance going forward.
Plugins like Blitz, for example, come out of a need and desire to have a very fast and performant site that feels lightweight, even though it's powered by a dynamic CMS. The idea for Sherlock, a security plugin, was, "Wouldn't it be great if I had a security monitor constantly monitoring my site and letting me know if something is up?". And the more sites you manage and maintain, the harder that is to do manually. So let's automate things that can be automated, to a certain extent.
Do you only use your plugins or also those from other developers?
The sites I develop will generally use 5 or 6 of my plugins, but maybe 1 or 2 from third-party developers. And I think you'll find this with many plugin developers, like Andrew Welch from NYStudio107, for example. He primarily uses his plugins because they fulfill the needs that he generally has. And that's not to say that every plugin developer should develop a suite of plugins that solves all of their problems, but it makes sense that that would be a starting point.
Why did you rely on a niche CMS like Craft or ExpressionEngine for your plugins? Wouldn't it be more lucrative if you specialized in WordPress?
Possibly. I've managed to get to the point where I'm working full-time in plugin development. And I would question if Craft is still a niche CMS or whether it has matured to the point where it has secured a healthy amount of market share. And it appears to be supporting the company behind it, Pixel & Tonic, plus an entire ecosystem of developers, so I would say that Craft is beyond just a niche CMS at this stage.
I was looking for technology, a team and a community that I truly believed in, and I saw that in Pixel & Tonic from the very beginning. - Ben Croker
The attention to detail and the quality of their work are outstanding. Along with that, they focused on adding extensibility from the very beginning. There was always a plugin architecture for Craft, even from version 1. That is also where my interest lies because I want to add functionality to the CMS and let the core part of the CMS enable you to manage content. Of course, there are things like importing and exporting content which I believe should be built-in. There are lots of first-party plugins that Craft CMS has, that make total sense. And then there are the third-party plugins that fill in all the remaining gaps: things such as performance, SEO, forms and navigation. But the fact that the plugin architecture is integral to Craft always drew me to it.
Pixel & Tonic fosters community, empowers people, and brings people together in a very respectful way. I've seen that to some extent in other tech communities, but not to this extent. I also love going to conferences, organizing events, meeting people and getting to know the faces behind the usernames and handles that I interact with every day.
How difficult is the balancing act between adding features to the CMS without upsetting the plugin developers?
I've never experienced fear of one of my plugins being integrated into the core – the plugin store is an invitation to plugin developers to come and add functionality. Pixel & Tonic take 20% of sales as commission, which is very fair because they provide an entire ecosystem for developers.
From what I've seen, Pixel & Tonics' approach is to remain focused on the core product, Craft CMS. There are first-party plugins that tend to provide functionality that is integral to Craft, things like FeedMe or Craft Commerce. So whenever you use Commerce, you know you get a first-party solution. And I think other than that, things that add third-party functionality should remain plugins. I think Pixel & Tonic is on board with that – they want to have a thriving, growing ecosystem of plugins.
What do you think about the new yearly releases?
It's promising. If you have a plugin for Craft 3, it won't automatically work with Craft 4. There's some amount of work required to update it for Craft 4, depending on what your plugin does. Some might say that's a negative, and wouldn't it be great if you could have an automatic transition? But I think it will help to weed out the plugins that are no longer maintained or no longer relevant, because Craft Core has added that functionality, for example. I feel that this will become a natural filter that helps to keep plugins in check over time. There's always a risk in using third-party plugins. I think there is a process involved in choosing which plugins you decide to use on your sites and what you decide to make yourself reliant on. And that process often goes in the direction of "Oh, this plugin hasn't been updated to Craft 4, or I can't get any support ", so you drop that plugin and learn which plugin developers are more trustworthy and reliable.
Meanwhile, you have to pay annual update costs for plugins. How has this kept your business lucrative?
The renewal fees have been extremely important. I want to highlight that Pixel & Tonic made some critical decisions over the years and very often, at the time, I would question those decisions. Only after some time, in hindsight, did I realize their foresight. And one of those is that when you buy a plugin license, this license is valid for one year, and then every subsequent year you need to pay an update fee to get updates and continued support. What that means is, as a plugin developer, your business model becomes much more sustainable like this. The size of the Craft community is only so big, and even though it's growing rather steadily, it's still gradual growth – we're capped at how many companies we can sell plugins to.
I think that cap would be quickly reached if there were purely one-off sales of licenses. Each agency can only build so many sites per year; the bigger the project, the longer it takes. I think that's something we experienced back in the ExpressionEngine days when we were selling add-ons without license updates, that you quickly reach a peak, and then sales would plateau or possibly start declining. What renewal fees add is a recurring source of income for those plugins. And it makes perfect sense to me that if someone buys a license of the Blitz plugin, for example, they're going to get continued support for years going forward. They will receive continued maintenance, and maintenance doesn't just mean bug fixes and security updates but also new features. And as Craft Core adds new features, we can leverage them, so it's newly added functionality. As a customer, it would be fantastic if you received a lifetime license, but as a plugin developer, it's just not a sustainable way of running a business. Having those renewal fees makes it sustainable.
The great thing as a customer is that you are never forced to pay renewal fees. It's optional and you can always continue running older versions of installed plugins. It was very forward-thinking to enforce that from the beginning in the plugin store and not provide an alternate licensing method. Just have one licensing system that works for all plugins.
How time-consuming is the support for plugins?
Well, I'm basically now in the support business as a technical support engineer. Oh, and I write documentation, so I guess I'm a technical writer as well. And I write the plugins, so I'm a software engineer. But I also come up with ideas, so I'm a product manager. I wear lots and lots of different hats. But I suppose support is around 25-30% of what I do. That includes everything from answering questions to looking into bug reports, to just going on stack exchange or Discord and helping people out with things, regardless of whether it has to do with my plugins or not. Once you get into the habit of supporting and helping people, it has an addictive quality. It's incredibly satisfying to help somebody who you can fully empathize with because you've been in that position before – you're struggling with this thing and there's a deadline looming and you just need a little guidance. I like to help people whenever I can and, of course, whenever time permits.
I can honestly say that support becomes a huge aspect of what I do. I tend to provide most of the support myself because I like interacting with people. I respond quickly, even if I can't provide an answer or solution immediately. I think that responsiveness is essential. For me, it's important to remember that we're dealing with human beings. We're all just human beings trying to do what we're doing. We're not talking to machines or robots. That's how I treat people, as fellow human beings.
We talked about your career and business. What do you find most rewarding about your job?
That's a good question. It might sound cliché, but what I find most rewarding about my job is the freedom it gives me to do the things I love. I feel very fortunate to have found an area in an industry that pays well and offers a lot of freedom. We can pretty much work from anywhere in the world. If we're self-employed or self-starters, we can work whenever we want. And we can also connect with people all over the world. I have clients in the US, Canada, Australia, Asia, South America and different parts of the world.
What I also find extremely rewarding is the ability to touch the lives of people who end up using the things that I create. One of my favorite things to do when people contact me and say they are using my plugins is to look at what their website does. I've found some wonderful projects doing very giving work, and seeing that my plugins help make that possible – even if it's just a small part – is very rewarding.
In addition, it means that I can spend time with my wife outdoors and we can travel and live in different places throughout the year. It's both the reward of seeing the solutions I've created being used, getting back a huge amount of freedom and the ability to move throughout the world and connect with people.