There are a lot of ways my business causes me anxiety. This is an unescapable part of being an entrepreneur.
The biggest inducer of anxiety is decisions with no clear answer. Nothing makes this happen more than when trying to figure out the best way to describe my product.
I have a few different slogans I use for Caldera Forms, and I’ve never been sure what was the best one to use. It’s a source of constant worry for me if I’m using the wrong one, or if it doesn’t matter at all.
One slogan is descriptive, one says it’s different and one says it’s easy. I’ve spent a lot of time debating over which one is best and I can make a good case for each. Without any data, I can’t know for sure, and honestly it’s been driving me a bit nuts.
Split Testing FTW
So, the other night I installed Ingot, on CalderaWP.com and started testing the three slogans. I’m using the new “destination test” feature we added in the last version. This allows me to drop a shortcode into my content, where I normally would use the slogan, and track a conversion when a product is added to the cart.
I might find that the slogan has no effect on conversion rate. Honestly, finding out that I was worried about the wrong thing would be just as valuable. Only when I can eliminate one factor can I move on to testing others.
When you’re in business, you spend a ton of time worrying about all the possibilities, and talking to different people about the different options. That’s important.
So is taking a few minutes to set up an automated test to give you hard data to inform your opinion.
Your business should solve a problem that you have and are passionate about solving. Of course, it’s not a good business unless that problem affects enough people and they are willing to pay for it.
Ingot exists because I knew I need to so A/B testing for CalderaWP and I wasn’t happy with any of the solutions available to me. The tipping point for me was actually an experience with MailChimp’s A/B testing system.
In MailChimp I started setting up a test in one of my campaigns and then I realized I was pretty sure I had done that test last time, but then I needed to confirm that thought, which turned out to be true. Then when it came time to fill out the field I had tested the last time, I had to look up which variant had won.
I got a little annoyed — especially because after all of that, I had to deal with the anxiety that came with the fact that my list wasn’t big enough to create a statistically significant sample.
It was like every reason I didn’t use complicated A/B testing services for CalderaWP’s website. All of which were built for sites with may more traffic than we have.
That’s why Ingot is a thing. I finally have a simple tool to do A/B testing on CalderaWP’s site that is designed to work on lower traffic sites — we get about 6-7 thousand unique visitors a month.
Online marketer Josh is happy not to have time to do analysis on analytics and split test results. There is now a plugin do that automatically.
No one tell online marketer Josh how much time developer Josh spent making that possible:)
For Christmas this year, my wife got me a Chemex coffee maker. It’s an amazing gift. This simple tool, when used right makes the best coffee I’ve ever made. Getting the ratios, water temperature — she also got me an infrared thermometer — and pour technique correct is tricky. I’m still getting the hang of it, but when I do it right:)
It’s a new skill to learn. It will take time to get consistency with it. It’s always going to take more time and effort to make coffee with the Chemex then with my FrenchPress. But, I enjoy the end results, and the process is fun. I don’t have a lot of hobbies, making coffee and doing it right is one of them.
I’ve been thinking a lot recently about optimization, Josh optimization, coffee making optimization and conversion rate optimization.
As many of you know, I’ve been working on a new conversion rate optimization plugin called Ingot. If you don’t know that, don’t worry, I’ll fix that:) By the way, we got a new logo, thanks to Michelle Schulp and a new website thanks to Jason Lemieux.
It’s A Moonage Daydream
I wrote last week about what I learned as a developer working on Ingot. I wanted this piece to be purely about business. Nothing about development. The first time I tried to write this it turned into something about David Bowie, which is fine. The send time it didn’t work.
That’s awesome failure, because it is leading me to understand that I can not separate the two. I am not a business person and a developer. I am a developer entrepreneur.
Being a developer entrepreneur is awesome because I can code up my own ideas. It’s terrible because I can code up my own ideas.
There was a time, let’s call it the last few years of my life, when I rushed from “great idea” to prototype. I’ve spent a lot of time coding an idea before even considering the business’ unique value proposition, or whether such a thing exists.
Whether or not that business idea was any good is sort of irrelevant. Having stumbled through Angular once before I had to learn it for Ingot, was valuable. Getting my head around three way bindings with Firebase plus Angular helped me understand how live-updating applications should work, and what’s wrong with how we try and fake them in most WordPress-based apps and plugins.
Not to say that I’m done learning. But I’ve gotten pretty good at what I do and I’ve created a situation where the things I need to do are sufficiently challenging, that choosing what to do and not to do, can not alone be about trying fun new shit. I’ve programmed myself to assume I can do anything, because with sufficient googling, I probably can.
It Works If You Work It
Being a developer doesn’t exactly mean that you can do whatever you want. It just encourages you to think that anything is possible with the right amount of looking stuff up online and experimentation.
This is what is so exciting and fun about what I do. I get to constantly find new and exciting puzzles to solve.
Ingot does two types of testing: content testing, testing any type of change in content and measuring clicks to a destination, and price testing, which tests changes in pricing and measures changes in sales and revenue.
Right now, content testing works, and is in the plugin and price testing is still “coming soon.”
Recently, while waist deep in working on implementing Ingot price testing, I asked one of my Ingot business partners to do some testing on Ingot content testing. He found some issues. I told him I’d get to them when I finished price testing.
Then I heard from a few people about how the UI flow could be improved for content testing. I told them I’d get to it when I finished price testing.
Then I heard from a friend about a new type of content testing we should do. You can guess what I told them…
I knew content testing wasn’t perfect. I put it out there so I could feedback. Ship fast, iterate and repeat is a smart way to work.
But it doesn’t work if you don’t iterate based on feedback. It’s not a magic system. As we alcoholics say, the system works if you work it.
Josh Version 12,146
Startup entrepreneurship is, by definition — IE according to Paul Graham — about businesses with the potential for exponential growth. But, I’ve always felt that nothing big is worth doing if it doesn’t make me a better person. It’s a constant struggle, but I try.
Startups convert pain points into products that alleviate pain points. If the pain point is sufficiently painful and widespread then the business has potential for exponential growth. That is, if the solution, sales process, customer experience, and customer retention can be sufficiently optimized.
I think a lot about this stuff. I built Ingot because I didn’t have a good way of integrating A/B testing into my sites. The existing solutions underwhelmed me and none of them were powered by WordPress. Having the basis of Ingot in place will empower me to using a data driven approach to improving my businesses in 2016.
There is a ton of cool stuff that I intend to do with Ingot that should be useful to others. That’s awesome. But staying focused on improving what we have so far, and building the right features, not just the fun features. That’s going to be the difference, from a developer stand-point between having a product that could be successful and can not be successful.
Notice that I didn’t say adding the right features would make Ingot successful. I said it would make it possible for it to be successful.
It’s so tempting to think you just need one more featured and then you’re product will be killing it. If only my plugin could do X, then everyone will want it. This is a kind of magical thinking that my ability to add features, and really enjoy doing so, has led me to.
That’s the lesson I’ve learned about business, by thinking as a developer about Ingot, as a business.
There are a lot of reasons why my wife is awesome. Sharing my life with someone who is so driven and focused on her ambition inspires me. One of the many positive qualities she has is how well she takes a compliment.
It’s something I’m working on to learning to emulate. I’m getting a lot better at not replying to a denial or compliment with a self-deprecating joke, which used to be my default.
While I still have work to do, I think the way I worded the last paragraph, compared to how I express the thought it in my “mental draft” of this article — “it’s something I fucking suck at.” shows my progress.
At WordCamp US I met a lot of people who I had helped through support, an article or one of my plugins. I had to work hard to take these compliments well.
When we deny compliments we are not only being rude to a person who is being incredibly kind to us, we are tearing ourselves down. Negating compliments is detrimental to self-confidence, self-respect and self-optimization.
It’s lying to yourself.
#realtalk I’m Awesome
See, I can do this!
I know I’m awesome and I don’t need other people to tell me that. But, it is great when they do:) While I have historically let the lack of self-confidence that compliment sabotaging grows out hold me back. It’s stopped me from asking for high enough pay, its stopped me from asking for help from others, it’s stopped me from finding the right financing for my business.
But, it hasn’t stopped me. Like the River Tam sticker on my computer says “No Power In The Verse Can Stop Me.”
My computer is also covered in stickers representing a small portion of what I helped build this year and a collection of Wapuus representing a small sample of the many WordCamps I’ve attended.
While I still have a few weeks left, I wanted to share some of the amazing things I’ve been lucky enough to be a part of this year by highlighting some of the publicly available work I have done.
But first let me tell you the thing I’m most proud of: every single item on this list is a collaborative effort. For those who keep asking me how I do so much, the simple answer is: David Cramer. I get to work with many other talented people, but I’m very lucky that I get to call one of the best plugin developers out there, someone whose form builder plugin blew me away with its awesomeness, my partner.
The CalderaWP sticker is at the top and it’s a pretty one that I’m very proud of. Our logo was designed by Lindsay Jo Crenshaw. It’s a fun logo and we strive to make plugins that are fun to use for the site manager and end user alike.
Since launching in February, we released 17 updates to Caldera Forms, and increased active installs from 1000 to over 10,000. We also released literally more Caldera Forms add-ons then I know about. Seriously, I need to check David’s GitHub for new ones I haven’t found yet. Some of my favorites are:
Caldera Connected Forms – Combines multiple forms into one big multi-page form. This allows you to create complex sequences of forms, with conditional logic on which parts to show based on user submission. It also tracks partial submissions and puts the results into one email and one database email.
Dwolla for Caldera Forms – This add-on was part of a GPL-powered partnership with GiveWP. It was also the project where I learned how Caldera Forms processors work.
Easy Pods, Easy Queries & Clarity for FacetWP. These three related plugins are really fun tools for creating custom search interfaces, as well as making working with complex WordPress as a CMS projects easier. Expect to see more iteration and possibly integration of these tools in the future.
URL Builder — I think this was one of my better ideas, and was definitely one of the hardest challenges I through at David. It’s a great plugin I really believe in that is missing a few key features and should be marketed very differently. This is one I will probably be looking for a new partner or home for soon.
Ingot — The automated A/B testing system for WordPress. This is the plugin that is my current obsession right now. We’re currently in beta and hope to be launched within the next month or so. It’s the first of what I hope is many projects that are executed by CalderaWP and a separate group of partners. In this case, Christie Chrinos and Andy Larreategui are handling the business and marketing while I focus on development with help from Roy Sivan.
I met Christie and Andy at a startup weekend in Tallahassee. Since then I’ve had a great time working with these talented people, and been able to introduce them to the wonderful world of WordPress. It was very cool to see the community welcome these two newcomers at WordCamps Orlando, New York and US. It was also great to see Christie start contributing to the Spanish translation of WordPress during WordCamp US contributor day.
Someone else will have to count all of the articles I’ve written for Torque this year. The fact that I get paid to help myself learn while helping others is so incredibly special to me. I am super grateful to Marie Dodson for being a great editor for and everyone at WPEngine who makes what I do for Torque possible.
Speaking of Torque and WPEngine I totally wrote a book! The book, on the WordPress REST API was a really special milestone for me. It’s been downloaded way more than a thousand times and I’ve gotten such great feedback on it. Major highlight of the year, I hope everyone who reads it makes something cool with the REST API and shares what they learned by doing so.
Speaking of the REST API, it’s so much fun to work with. I’m using it in Ingot to power our admin — a single page web app written in AngularJS — and in the front end to track the testing. I’ve also released REST API add-ons for SearchWP and WordPress SEO by Yoast.
I also made 16 commits to the REST API itself and contributed quite a bit to the docs. The REST API earned me one of my three “props” in WordPress 4.4.
Some of my favorite plugins I worked on for clients earlier in the year used custom APIs. These were fun to build, but REST API all the things moving forward.
The first of those plugins is Editus (formerly Lasso) by Aesop Interactive. I wrote a custom front-end AJAX API, and implemented. I also refactored their PHP to be more efficient and added new features. I can’t explain how much I love the process of architecting or re-factoring a WordPress plugin — #thatkindofnerd
I wrote a very similar API to handle live commenting in Epoch by Postmatic. This plugin was Jason from Postmatic’s vision, which I lead the development of and executed along with David, Jason and his developer Dylan Kuhn. Everytime I comment on WPTavern, it makes me smile to watch Epoch work.
Speaking of Postmatic, David and I also added three new features to Postmatic, MailChimp import, Subscribe2 comments reloaded import and the subscription optins. Also I got to know Jason, learn from watching him build Postmatic and from all of his advice he gives us on Caldera Forms.
On the topic of awesome clients that are more than just clients, Matt Cromwell and Devin Walker from WordImpress are just great people. They are encouraging, full of great business advice, give great feedback on our plugins, as well as being vocal supporters and users of Caldera Forms. We also worked on two plugins for them this year.
While I moved away from Pods this year, I still contributed to the project. We launched Friends of Pods, a program to help support Pods financially and I just wrapped up a really cool REST API integration for Pods 2.6.
Even though Pods is no longer my main thing, I always want to be a part of it. Pods was my first WordPress team and I would not be where I am today without support, encouragement, mentorship and friendship I have received from Scott Kingsley Clark, Phil Lewis and Jim True. The Pods sticker on my computer is one of the fanciest stickers on my computer and one of the ones closest to my heart.
I’ve been talking about myself way more in this article than I’m used to. Not going to lie, it makes me uncomfortable. But, I know none of it would be possible without everyone who reads my articles, uses my plugins, gives me great advice and encouragement.
This year was also my first time attending the WordPress community summit, which was a special experience. It’s a true honor to be invited to the event. Community Summit is a private, confidential event so I can’t share too much about it. But, to be with 150 leaders of my industry passionately debating how to best move it forward is an unparalleled privileged.
Honestly, this whole thing that I get to do is a privilege. I’m so excited to build on the groundwork that we — David, Christie, Andy, Roy and everyone else I work with and I have built. It’s what’s going to make it possible for all of us, everyone I’ve mentioned here and more grow together in 2016.
I’ve had so much fun teaching myself the WordPress REST API for the last year or so. Part of what has made the experience so great is sharing what I’ve learned a long the way — tutorials, WordCamp talks, Podcast appearances, a free ebook.
I can’t decide what I love more — using the REST API to build custom APIs the WordPress way or sharing what I’ve learned. So, I’ll just keep doing both.
That’s why I’m happy to announce I’m working on a four part video course, teaching you how to use the WordPress REST API.
The REST API Is The Future Of WordPress
Actually, it is already in use by those doing the coolest stuff with WordPress.
WordPress just hit 25% market share among content management systems. That’s awesome, the more growth in our industry the more potential customers or clients there are for people like you and me who offer WordPress services and products. We know that there are a lot of negative opinions about WordPress out there. Some of them are fair, some of them are not.
The more times we can exceed the pre-conceived opinions about WordPress, deliver more “You can do that with WordPress?” moments, the more our industry will grow. I want you to be the one to deliver that “wow” moment to your clients. I want you to be able to give more to your clients than they expect from a WordPress site. Don’t forget to raise your rates 🙂
But Wait There Is More!
The course will be available in December 2015. But if you sign up today you will get a special discount. Don’t delay — once the course is ready for download, the price goes back up.
Want to learn the REST API one on one with me? I’ve got a special bundle that includes the course and a one on one consult call via Skype or Hangouts.
No matter how hard I orient myself around the perspective that being wrong is the best learning experience, being told no one wants what I am trying to sell is hard.
I’ve been thinking a lot about conversion rates recently. Not just because I sell things online, but because I have two upcoming product announcements that are about boosting conversion rates.
You know, the awesome thing about conversion rates is we talk about winning 10% of the time. Not losing 90% of the time. If your target conversion rate it is 10% and you hit that you have a “the glass is full enough for us to drink” outlook, not a “the glass is quantifiably speaking, less than half full” view of the world.Yesterday, I shared a draft of a post I’m working on about one of those products with my team and they called it “good persuasive writing.” I hadn’t thought of it as persuasive writing, I just did what I do — write a story about something I’m working on.
I’m not telling you what these two new products are, yet. I’m taking you along for a narrative journey to them.
If You Need WordPress Sales Copy Done Right, Talk To Lisa
Social proof works, friends.
When I started CalderaWP I knew I’d need to do a lot of writing of sales copy. A lot really, since we have so many plugins. You have no idea. Seriously, go to our plugins page, look at all those plugins, realize that there are a ton more we haven’t QAed yet.
I wasn’t worried. I think I’m pretty good at writing about WordPress. People keep telling me I am. So I wrote a bunch of sales copy that I thought was simple and easy to understand. People started telling me that it was “to techy” and didn’t make the benefits clear.This upset me, because I thought I had made it all simple, clear and not too technical. I love doing it all myself, but I also know the value of building teams and outsourcing when needed. So I hired Lisa Gibson of WordMaid.com to fix some of our sales copy.
Why her? Andrew Munro of AffiliateWP and Easy Digital Downloads endorses her on her site. That’s about as targeted of social proof as you can get. I needed someone to improve the sales copy for products in a similar niche to what Andrew does, and I’m selling them on a site powered by Easy Digital Downloads that uses one of Andrew’s themes.
Go niche or go home.
Did I mention she delivered, and delivered really quality work? Seriously, she made the pages for Caldera Forms, Easy Queries and URL Builder so much more clear and simple. And guess what? They convert better now.
Start With The Other Why
It’s about the journey, not the destination.
So I realized that I needed help making my sales copy clear, simple and easy to understand, so I hired Lisa to work her editing magic. It made sense and you should to.
But, sales pages are not your only sales copy. When someone gets to a sales page, they are looking for the details. Why do I need it? How does it do that? What does it cost? Your sales copy needs to give them that and make it clear why.But how do you get them there. You engage them with a story.I’ve written before on how I work to craft my WordPress tutorials as a narrative journey in which build empathy with the reader. I do it to empower them to go on a journey where they believe they can do the thing I’m explaining. It’s important since explanation is worthless if the person you’re explaining to doesn’t believe they can accomplish the goal they have set out to achieve.
Simon Sinek’s “Start With Why” has become a sales mantra. Start with why someone needs your product, or to believe in your cause, why it reinforces their notion of self. Not what it is or even worse how it works.But you can step back a step, and take people on the journey off why you’re making a product, why you’re championing a cause.
I Think Y’all Like Me
If not, be nice and don’t say anything
Since I first wandered randomly into the WordPress world it’s been amazing how welcoming I’ve felt. Sure, I get socially awkward, and convinced I’m a fraud and no one likes me as much as the next person sitting alone in his room letting impostor syndrome consume them.
But y’all keep sharing my articles, downloading my book (1400+ times,) inviting me to speak at WordCamps (8 by years end,) downloading Caldera Forms (we’ve pentadrupled the active install count since launching CalderaWP) and otherwise making me feel welcomed and appreciated.That’s super awesome.Thing is y’all inspire me more than you know.
So why wouldn’t I share the journey that is taking me to all these fun things I get to be a part of making?
The other night I was at the gym struggling to complete my sets on one of the leg machines that kicks my ass especially hard when I noticed two people doing “super sets.” Super sets, if you don’t know, are exercises that people do in between weight lifting sets — push ups, jumping jacks, etc.
That’s right, people are doing exercises between their exercises.
That night as I was struggling to reach my goals on the weight lifting machines, these two people were not just lifting more weight on the same machines as I was. They were also doing aerobic exercises in between — time I reserve for panting and cursing under my breath.
Luckily I didn’t let myself compare myself to these way more fit people, who have clearly been working out for more than a few weeks.
See I often go to the gym with my friend Andy. He shows me what to do, and then does it with way more weight. I’m just getting back into exercising, so I’m learning from him, and doing what I can.
Focusing on how much more he can lift than me is stupid. Focusing on how he does it, taking his feedback on how I’m doing it wrong and how to improving my breathing is how I’m going to get my ass in shape.
Inspiration or Comparison?
Or why Josh woke up in a shit mood today and how he turned his day around…
The WordPress community is gifted by people who have had success and then share the lessons they learned along the way. It’s pretty amazing that when I’m starting a business that is in many ways similar to iThemes, I can hear their founder Corey Miller speak at WordCamps, get really awesome advice from him, read their awesome WPProsper newsletter…
Corey isn’t the only example. I had the pleasure of meeting James Laws from Ninja Forms, a business even more similar to my own at WordCamp Atlanta. I spoke with several members of his team then and have talked to him a few times online about running a business in the add-on model since then.
This is awesome, if you want to be in the WordPress ecosystem, and you’re not taking advantage of this, then you are doing it wrong.
But that’s the easy part. The tricky part is not looking at their success, trying to emulate and then beating yourself up for not being where they are.
I started a WordPress product business of my own about six months ago that is going pretty well so far. Are we as big as iThemes or Ninja Forms? Nope. Are we years behind them in experience, building a brand, and nurturing our user base? Yep.
The support the WordPress ecosystem provides is awesome, but it does not make it easy. You can and should emulate those who are more successful than you. But it takes time and lots of hard work.
The real doing it wrong, a trap I find myself in, is comparing my self to people who are years ahead of me in terms of their revenue numbers, active install counts on WordPress.org, how mature their products are and how much everyone loves their products.
I believe in what we are doing at CalderaWP, the products are awesome, and the response from people who have used them is very positive. We will not be an overnight success, and neither were any of those I look up to.
So yes, it’s a trap. But it is an easy trap to get out off.
Those who are more successful then you, are great inspiration and when they share how they got there, that’s awesome. When you get out of the comparison trap, you can not only move forward. When you learn from them, instead of comparing yourself to them, instead of getting dragged down by jealously, you find your own unique path.
That unique path, in time is either going to work, or not. I have no idea. But only by moving forward on it, am I ever going to find out. I hope y’all will keep watching and find out.
Y’all Are Awesome
I should put that on a t-shirt 🙂
Thank you to everyone single one of you in this wonderful community for inspiring me to keep at it. It means the world to me, and I look forward to seeing y’all at upcoming WordCamps — I’m speaking at Las Vegas, Tampa and New York and planning on getting to Orlando and US as well — to say thanks in person.
In the meantime, we’re going to keep making Caldera Forms more awesome and spinning up other cool plugins. I hope you will try them and let us know what you think.
Recently I sat down with the developer of Morning Frame, a really cool analytics integrator, to help him figure out how to integrate with WordPress. I had to explain, as best as I could, the difference between the WordPress.com API, the Jetpack JSON API module, and the WordPress REST API.
Explaining, to someone with little experience of WordPress, the subtleties of how the WordPress.com API relates to the Jetpack JSON API module, and how the real one is the one that’s in a plugin, but it’s in a feature plugin, which is…
Yah, it got confusing.
The WordPress REST API has seemed like a forgone conclusion for inclusion in WordPress 4.4. Matt Mullenweg highlighted the REST API in his last State of the Word and all of the wonderful possibilities it could bring to WordPress.
While there has been ambiguity, it’s the topic that everyone wants to discuss at WordCamps. It’s the only reason why application developers from all sorts of backgrounds are looking at WordPress as the back-end for their apps. And the API itself the code is really beautifully with really lovely extensibility. It’s also in use on high traffic sites, has a dedicated team of “core” team of developers, 50 some minor contributors and is almost ready to go.
The seaming unavoidability of this becoming a feature of WordPress was snapped on Monday, when, during an epic 6 hour Slack conversation. During that conversation, Matt voiced his concerns about it, and questioned whether this feature should be a feature at all or if it made sense to stay as a plugin.
Nothing is settled, and no decision has been made one way or another, but now is the time to speak up if this feature is important to you — and if you’re reading this site it almost certainly is.
I have no idea what is going to happen. I suspect, but have no idea, that Matt is playing devil’s advocate and challenging everyone to question their assumptions. Questioning assumptions is an important part of decision making. If that’s what is happening then he is being a good leader.
I followed the whole discussion, as this really important to me. I also built, yet another REST API add-on while I was reading, this time for WordPress SEO by Yoast
Having read the discussion, I am even more convinced that the REST API has to go in core. It’s a feature we need.
Either a RESTful API is a feature of WordPress — and it should be — or it’s not. And if it’s not, that’s a potentially devastating mistake for WordPress.
I wanted to share a few important reasons why I feel this way. I hope ya’ll will agree, and more importantly, share your own reasons why, either in a comment — now powered by Postmatic — or on Twitter or write about it on your own blog.
Now is the time to share why we need this feature in WordPress.
There Is No Existing Solution
All modern web apps, and most websites need a public-facing API. XML-RPC does not solve that requirement. XML is not modern, developer friendly or efficient. It’s also not what modern MVC frameworks consume.
One of the goals of the WordPress REST API project is to allow the phasing out of XML-RPC in core. A plugin can’t do that.
The modern web is being built with frameworks that consume JSON APIs. WordPress’ content editing tools, plugin ecosystem plus a RESTful API that is a huge boost to application developers.
Seriously this is 2015, RESTful APIs are what we use.
Yes, Jetpack offers a RESTful API, but while I am a big fan of Jetpack and use it on this site, I’m not going to run it on a site that powers an app. Nor is it extensible.
The Jetpack/WordPress.com API is awesome for the integrations with WordPress.com that it offers. But it’s not a developer’s tool.
More importantly, what I learned from working in the WordPress ecosystem is the importance of controlling your own data.
And the REST API can’t be a feature plugin forever, because then its not a feature. It’s another plugin. A feature plugin is a thing that only insiders understand. Beyond that, a feature plugin is a test for a new feature, not a feature. An exciting new feature that never leaves development, that reflects poorly on us all.
It Will Grow WordPress’ Marketshare
The WordPress REST API could democratize application development.
Only a REST API in core can dramatically grow WordPress’ marketshare by bringing app new developers into our ecosystem.
I get emails from non-WordPress developers several times a week looking for help integrating WordPress with whatever they are building. I’ve worked on projects where I didn’t know the language the actual product was being written in or didn’t even know what language it was.
Those emails from developers outside of our ecosystem, looking to use WordPress for their apps, they are coming because the REST API will be in core. If that doesn’t happen then the feature will be seen as rejected — and with good reason.
Growing WordPress’ marketshare, by making a better blogging platform and website builder to compete with Wix or Squarespace brings more users into the pool of users that may need my services, or buy my products. The same goes for most people reading this.
Walking away from having a RESTful API, and an incredible tool for building your own in WordPress is walking away from another set of potential users — developers. These are people who will need the services of qualified WordPress developers, a managed WordPress host, and the various services — backup, anti-spam, etc. that are provided by members of our community.
Having WordPress’ content management system available, for free, to app developers saves them tons of time and money. It means a quicker path to MVP, opening the door to more experimentation as well as a lower barrier to entry for those without financial resources.
The only suitable alternative is to roll your own RESTful API, which we all do. It’s a waste of time, and doesn’t contribute to a standard. WordPress’ job is to create a standard, sensible defaults, and the opportunity for customization. This is what the REST API does — gives us a set of well-done defaults and the tools to customize the API to fit our needs.
Plugins don’t codify standards for the WordPress way and they don’t give WordPress its common defaults — that is what WordPress does.
It Is Not The API Until It Is In Core
It’s either a feature of WordPress or it’s not.
Yes, the REST API could just be a plugin, technically speaking. But then it’s a plugin. It’s not a feature of WordPress.
Jetpack isn’t the social sharing, analytics, contact form, etc… plugin. It is a popular option. That’s fine, we don’t need standardization for what Jetpack does.
We need standardization for default routes. There is no other way someone can build a general app, one designed to integrate with any WordPress sites, unless there is a standard. By general apps, I mean content editors, backup and site management systems, all of which are rolling their own APIs right now.
I also mean the kinds of apps that don’t really exist yet, but I would love to build, that work across sites to improve management of specific features — social integrations, SEO etc. Seriously I have a lot of these ideas, someone DM me on Slack or Twitter, if they are interested in getting involved. Well, if the idea of a RESTful API as a feature of WordPress isn’t killed off that is…
It’s also very hard for plugins and themes to integrate with a feature of WordPress, that isn’t a feature. WordPress doesn’t have a plugin dependency system, it may one day, but that’s technical challenge that is going to take a lot of work.
The WordPress theme repository prohibits themes that rely on a plugin to work. There is a good reason for that: a theme should work with WordPress and shouldn’t bork a site if a plugin is disabled.
The REST API presents an opportunity to make better, more dynamic and offline-friendly themes. Until developers can deliver a REST API-powered theme that just works with WordPress it’s not going to be a smart business move for anyone to make.
There is a reason why there are very few WordPress themes powered by the REST API, and none are aimed at “regular users.” Nor should there be, a theme should work with WordPress, not be reliant on a plugin. A REST API-powered theme for general release is a non-starter unless the REST API is a feature of WordPress.
The REST API Has Institutional Support
A new feature is like a puppy, it’s cute now, but what happens when it shits on the rug?
Most new features of WordPress, in some way are useful to WordPress.com, or some other Automattic product. That’s great, as Automattic, a large, stable, and well funded company has an interest in seeing these features maintained.
But WordPress.com already has a RESTful API, this new API is for the rest of us. Luckily WordPress is bigger than WordPress.com.
The WordPress REST API is in use on the sites of huge media outlets. These sites are developed by some of the best WordPress developers — developers with a strong history of involvement in our community.
TheWordPress REST API is in use on sites built by the big WordPress development agencies. The same agencies that contribute in a multitude of ways to our community.
This feature, developed by community members, a part from Automattic, a part from the core team, if it enters core, is a victory for the ideal of an open source community. If this project with an overwhelming amount of support doesn’t become a feature of WordPress, what does that say about the openness of the WordPress project.
If the REST API is added to core, that is a lot of code that needs to be maintained. Code that needs to work with WordPress 5.7.
The WordPress API has passionate contributors, who will love it when it stops being shiny and new, because they love it and have a vested interest in it continuing to work.
It’s also really well done, easily verisonable, and has great unit test coverage. It’s not perfect, but it can be easily evolved and improved, which will happen if the excitement isn’t robbed from this project.
I Love It? Can We Keep It?
Forget the #wpdrama this is the debate that matters!
I’m not going to lie. I’ve got a lot of skin in this game. I’ve been writing a lot about the REST API for Torque, and building custom add-ons as well as contributing to the REST API docs. I do this because I want to spread the word and because I want to be a go-to person for REST API integration and customization. That’s how free software works — we contribute, create extra tools and educate — giving freely to establish ourselves as experts.
But we all have skin in this.
The WordPress REST API is already attracting new people to WordPress. Adding it to core will bring more. Rejecting it as a feature of WordPress says WordPress isn’t developer friendly.
Even if you never build anything with the REST API — those new people may be your customers or clients.
The WordPress REST API already helping us build awesome stuff. With it in core, we will build even more cool stuff. Rejecting it says “sorry no thanks.” It says we’re stuck in our ways and against modern trends in web development.
Even if you never build anything with the REST API — you are likely to use something built with it.
If you’ve read the source for the WordPress REST API, and I have read most of it, it’s something you can be proud of having in the tool you use to make your living. If you’ve used the REST API, you know how awesome it is, and all of the possibilities it opens up.
We can’t walk away from this feature now, and that’s what happens if it’s not in core. If it’s not in core, it’s just another plugin — not a standard that can help us stop rolling our own APIs, or using XML-RPC.
It goes in core or it’s not something we can all count on being there and count on staying there. If it’s not in core, we’re going to be making insanely complex explantations to potential clients and users for years to come, and apologizing for something we could have had but didn’t.
We were all told the REST API was the future. Then we tried it and said “the future looks awesome.” Let’s not let go of that future.
It was never my goal to write about WordPress, but since I was a kid, I’ve consistently wanted to be a writer. Despite putting a ton of work into trying to be a science fiction writer, or a creative non-fiction writer, I was never particularly good at it.
One of the many things that my involvement in WordPress has given me, is that for the first time in my life I’m getting paid to write, and people read and respect what I write. That’s awesome, ya’ll are awesome, thank you.
In this meta-tutorial I’m going to share some tips, that will help you write awesome tutorials of any kind.
Know That You Have Something To Share
Yes, you really do.
If you’re a developer, write a technical tutorial about what you just did. If you’re a marketer, share a winning strategy. Whatever you do, share it. At the very least, you’ll have written it down before you forget it, but someone will find what you write useful.
It might seem to you like a tutorial is just a list of steps to do something, but to write a good one, it needs the elements of a story. A story is a simple thing, with three basic parts.
Someone is one way, then something happens to them, then they are different. A story is a thing that happens to someone.
Most of my tutorials, before the first subheading, tell the reader what they will learn and in the last section tell them what they learned. In between the beginning and end they learn something new.
Tutorials are stories about you, the reader, wanting to learn something, trying that thing, and as a result being able to do that thing.
Context & Personal Experience
But what about Josh?
I try and interject myself into my tutorials as much as I can. Many of the articles I’ve written tell you why I figured out how to do what I’m about to share. It helps the reader understand the importance (or not for them) of what they are trying to learn.
I also think it makes the tutorial more relatable to provide a personal touch. In addition, a real story requires an inciting incident. The more engaging your tutorial is emotionally the more likely the reader is to internalize its message and remember you fondly for having offered it.
What Not To Worry About
“I will take the Ring,” [Frodo] said, “though I do not know the way.”
I probably could go on about a lot of other things, but I’m intentionally avoiding the most obvious suggestions. Instead I want to leave you with a few things not to worry about:
No one will read it.
Maybe not. But stick with it, audience comes in time. And besides that, this is a craft that requires practice. In the beginning, a lack of an audience is a marvelous thing.
I might be wrong.
Very true. The more you put yourself out there, the more likely someone is going to tell you you’re wrong. In many cases they will be spot on about how wrong you are. Is being told you are wrong the worse thing that could happen in your life?
I’ve been told I’m wrong on the internet a lot, often with good reason. Of all the bad things that have happened to me in my life, eh…
I don’t have time.
To be honest, me neither. But, writing is one of the more rewarding things I do, so I keep doing it. It might be that you should write a post a week, or that they more you write the easier it is for you to keep writing.
That all depends on who you are. Good writing exposes your true self. The quicker you find out how your true self relates to your writing, the more fantastic you’re writing will be.
A client comes to you and says they want you to develop a web application. They show you a list of requirements, and in it there are a lot of options for the end user to customize the look and other front-end functionality of the app.
Then they tell you that they want some of these visual options to be managed in a real-time updating interface, that shows a preview of the site, and some to be managed in an interface with no visual feedback at all.
I don’t know about you, but I’d tell them that having two interfaces for controlling the presentation layer of their app is going to create a confusing user experience and that they needed to choose one or the other. My personal vote would be for the one with the real time feedback.
Change Requires Perspective
“Automatic updates in WordPress are going to destroy everything.” – The ghost of #wpdrama past
As WordPress users, or as someone whose job it is to deliver and maintain client sites using WordPress, change often sucks. But on a project as large as WordPress, change can’t be viewed from the level of the site, but requires a more global perspective.
I don’t know what it’s like to be a core developer. I do think that maintaining plugins, that I am an active user of, but I also have to think of the thousands of other users, or in the case of Pods, tens of thousands of users, gives me some perspective.
Since the Customizer was added in WordPress 3.4 (release date June 13, 2012) WordPress has had two different interfaces for visual options, and like the theoretical app I discussed above, that’s just bad UX.
I Demand Real Time Visual Feedback!
“Been working on it for three years dude.” – WordPress
Over time the Customizer, along with the new theme navigation system, has slowly absorbed more of the old system. And that’s good. I look forward to the day when the Customizer has consumed all visual options on my site, just like I look forward to when Lasso can fully replace the back-end post editor, which it is very close to doing.
I currently do almost all of my post editing for this site, from the front-end and it is wonderful. No more false promises of WYSIWYG. I’m actually seeing what I get.
As a user of WordPress, it’s what I should expect, from post editing, or any other visual changes on my site. I want to edit and preview it in context, not in the abstract.
The WordPress admin started out as a traditional PHP application, but every update replaces more and more of the old way with a modern, AJAX-driven web app. That’s awesome.
Could every single part of it be improved? Of course, software is never done.
I’d say the Customizer is the future, and if you don’t like some part of it, now is the time to propose and create improvements, but the customizer has been the norm for three years now.
Not that its age should stop you from respectfully suggesting improvements to it.
I personally look forward to what new capabilities that the Customizer will acquire in future versions. In addition, I’d love to see more plugin developers (points finger at self) make use of the Customizer in innovative, and user-friendly ways like Conductor does.
Last week, Tom McFarlin laid down the hammer on the level of animosity that is currently all to present in many parts of our community. I thank him for doing so. When something is wrong in a community, its leaders have to stand up and say no.
From discussions around to the customizer, to discussions about the WordPress Foundation’s lawsuit against WordPressHelpers, the tone of the debate has gotten ugly and in many cases become downright harassing.
Tom is very right — it needs to stop. But wishing doesn’t make it so. So I wanted to offer a few thoughts on where this frustration is coming from, while resisting the urge to throw in my 2 cents in on the actual issues being debated… for now.
I think understanding is important for improving communication and decreasing animosity. Before I do I want to say three quick things:
At the end of the day it’s going to take more than understanding, it’s going to take leaders in our community saying “this isn’t right.” Maybe we need a hashtag that is the reverse of the #wpdrama tag that can be used to point, hopefully with some humor, that what is happening is not cool.
More so than every other article I’ve ever written, some, if not all of what I’m saying here is full of shit. So I ask you to take it with a grain of salt and practice forgiveness when you feel I am wrong. Personally, I strive to do the same and be less quick to think of people, or call them “jerks” or “trolls” when that is my gut reaction, which it often is.
There is no excuse for using using racist, sexist, homophobic, and similar language to put someone down, instead of discussing your disagreement with them. I suspect that when this type of harassment occurs, and it does when #wpdrama goes over the line, that the issue has very little to do with the customizer, Automattic’s clearly-defined special relationship with the WordPress Foundation, or whatever else is actually being discussed.
WordPress Isn’t A Democracy
Decisions are made by those who show up. – Jeb Bartlet
WordPress’ mission is to democratize publishing, but the open source project, and the WordPress foundation are not democracies. The open source project is lead by people who didn’t just show up, they showed up, gave back value and kept showing up.
While the size of the group that does get to make final decisions, both in terms of committing to core, deciding its direction and other parts of the open source project has grown significantly over the last few years, proportionately speaking, this group of people is an even smaller percentage of the total community.
As the community grows there is less of a chance that someone who disagrees with the actions of a leader has interacted with them on Slack, or Twitter or met at a WordCamp.
So, let’s keep in mind that while the process is open, decision making is still in the hands of a view — as it should be. But, not everyone’s job or business can be organized around making the commitment to becoming contributors, and becoming leaders. As a result, it’s very hard for many to feel like their concerns can be heard.
The people who are able to make contributing to the progress a huge part of their work day, they are rightfully personal invested in WordPress. It’s what they make, and what has empowered them to be where they are today professionally. It’s their baby and I understand why they are protective of it, especially who are criticizing it are not putting in the work on it, or being particularly nice about it.
Not Everyone Is Killing It
But beware of the dark side. Anger, fear, aggression; the dark side of the Force are they. Easily they flow, quick to join you in a fight. If once you start down the dark path, forever will it dominate your destiny, consume you it will, as it did Obi-Wan’s apprentice. – Master Yoda
There are a lot of people who are, thanks to WordPress killing it, in terms of meeting life goals, having fun and making money. We have a very giving and open community. We encourage people to share details of their success and show others how they have done it.
That’s awesome. But not everyone has the skills, time, personality, connections, luck, etc. to take these models and make it work for themselves. I know personally while I’m having a lot of fun, and making OK money, I’m far from “killing it.”
As I write this I have a less than $200 in my checking account. I have lots of work coming up, I’m starting to invest in better financial planning — a major failing of mine — and things keep growing at CalderaWP, so I’ll be fine. But I know how frustrating it is to be working crazy hard, and not having much to show for it financially.
Frustration, and jealousy leads to bitterness.
Contributing to WordPress has delivered amazing things to many. Many have found the right product or service that they can sell well. We call that killing it.
Others, not so much.
So, let’s be mindful that the WordPress community offers an amazing promise, but it is not attainable for everyone.
Contributing Is Hard
And it should be.
I am a firm believer that the more that you give to the community, the more you get back.
I also know that it’s a difficult up-front investment. You need to give a lot of your time for free, give it correctly, and then properly exchange that reputation for career building. That’s hard when you’re already putting in full-time or more hours into your business, which generally has a similar equation.
Of course contributing to WordPress is more than contributing code to core, or feature plugins. While I’ve had a few “props” in core, and a small handful in the REST API project, and spoken at WordCamps, I know I could do more.
I don’t have any real wisdom to add here. As it should be hard to contribute to core. What happens in core affects millions of websites. What happens in the rest of the open source project has big effects on us all.
What I can say, is what we say in AA, “The system works when you work it.”
That’s not an offer of magic. You don’t show up at an AA meeting and become permanently sober, but those who work the system, almost always get what it promises.
Life Is Hard & The Internet Is Mean
But WordPress is our profession.
The WordPress community, except during Meetups and WordCamps occurs on the internet, where the level of discourse doesn’t always trend towards civil to say the least. Part of that is a reflection of society at large, part of it is a bad habit we are all caught in and constantly reinforcing and some of it has to do with the lack of face to face contact.
Our work and involvement in the community is not isolated from the rest of our lives. When people get frustrated, because a change isn’t what they want, or they felt like they had no voice in the decision to change, or the change could hurt them, cost them money, make their lives harder, etc. their frustration isn’t just about that. It’s compounded by all the other BS in their lives.
While this is what many of us do for our jobs, and therefore we approach it in a professional manner. For others, it’s just another part of the internet and for too many that means that being hyper-literal and quick to go to hateful language. That might be fine on 4chan or certain subreddits and middle school playgrounds, but it’s not in a professional setting, or in most places, which is a good thing.
Being Right Is Meaningless
What do you want me to do? LEAVE? Then they’ll keep being wrong!” – Randall Munroe
Sure, the bigger the community gets, the bigger the percentage of people in it that are just jerks. That happens in any community. But that’s not what this is about.
This is about smart people who are right about something they are passionate about.
But “right” is subjective. Nothing is objectively true, except, possibly the fact that we can’t be objectively sure about anything. Uncertainty is tricky, and appears to be a fundamental component of our universe.
I started this post by pointing out that some — unknown to me — portion of what I had to say was full of it. How much? I don’t know. I’ll end by asking you to be kind to me for my failings, and consider that someone being wrong on the internet, just might not be the worst thing.