June 12, 2014

For episode 19 we discuss the recent BeachPress event, things to consider when discontinuing a commercial product, the launch of the new Blender Markets website, contributing to WordPress core on “paid time”, and more.

This episode was sponsored by WP Ninjas, a leading WordPress plugin development team that is constantly innovating and building excellent tools for the rest of us. WP Ninjas just recently launched NinjaDemo, the only complete demo solution for WordPress.

Screenshot from 2014-05-29 17:59:36

Show Notes:

Photo credit: Liz Randall

Transcript
INTRO: Welcome to Apply Filters, the podcast all about WordPress development. Now here’s your hosts, Pippin Williamson and Brad Touesnard.

PIPPIN: Hello! I am Pippin Williamson, and joining me as usual is Brad Touesnard. Say hello, Brad.

BRAD: Hey, everybody.

PIPPIN: Welcome to Episode 19 of Apply Filters. Today we’re going to talk about a lot of different things that we’ve been involved with recently, both projects, events, things going on in the community, et cetera, and it shouldn’t fill up our whole episode.

But right before we get into that, we want to mention our sponsorship again, which comes from WP Ninjas and their recent product Ninja Demo. They’re getting ready to push out a new version that has some cool, new features on it. If you’re not familiar with Ninja Demo, go to ninjademo.com and check it out. It is one of the only options available to easily create a demo environment for your WordPress themes or your plugins where potential customers can sign up in just seconds to get a dedicated demo where they can really give your product a test drive.

BRAD: Yeah, that’s cool. That’s one thing I didn’t really realize when they first launched is that each time a user starts a demo, it’s private. You know, not everyone else could see what they’re doing and stuff.

PIPPIN: Yeah.

BRAD: That’s super cool.

PIPPIN: One thing that I think is really cool about it is because it’s private — the way that it works is you have a multisite install and then, when you generate a demo, it creates a new site within that multisite. Then that user gets access to that site, which means that, depending on how you have it set up, you could give them access to edit any content they want. So if you’re demoing, say, an e-commerce plugin, you could allow them to create products, test sales, et cetera, and it wouldn’t affect anyone else’s demo.

BRAD: Cool.

PIPPIN: Yeah, so it’s a pretty slick system. We’re using it on Affiliate WP right now, and it’s working really well.

BRAD: Nice. So, man, where have you been? You’ve been kicking around somewhere on a coast, I think.

PIPPIN: Yeah, I’ve been traveling a lot over the last week, mostly because I traveled to Oregon all of last week for BeachPress 2.0, which was this really cool event put on by Justin Sainton. Basically the idea was to get 20 to 30 people from the WordPress community and put them in a house on the beach for a week and see what happens.

BRAD: That sounds terrible. What a terrible idea.

PIPPIN: No, it was amazing. It was really cool. It was very much a — it was kind of like an un-conference. The idea was to have everybody come together, stay together in this house, and see how it works out. So it was really a co-working situation where everybody was kind of doing their own thing.

Since we were there for a full, I think, five days, there wasn’t any of the normal tension that you might have from trying to get the scheduled events happening and make sure that everything happens on time to the schedule and that everybody gets their money’s worth.

BRAD: Right. There is a schedule to BeachPress?

PIPPIN: We had a little bit of a schedule.

BRAD: Okay.

PIPPIN: It was kind of — it was more of the: hey, on this day we’re going to try and do some lightening talks. On this day anybody who wants to is going to go tour a brewery. That was kind of it. There wasn’t a very rigid schedule that says, okay, at 1:00 p.m. on this day Justin is going to talk about his WP Commerce work, and on this day Ben Lobaugh is going to talk about JetPack. No, it was very casual.

BRAD: It was a bunch of great — you know, you just get a bunch of great people in a room and see what happens kind of thing, right?

PIPPIN: Exactly.

BRAD: Yeah.

PIPPIN: And it was awesome. A lot of people — everybody was able to take the time to have their normal day-to-day meetings or do a little bit of their day-to-day work, so like I managed support tickets while I was there, pushed out a couple plugin version, but we had a lot of time to not just get to know each other, but get to work with each other too, and so that was cool.

BRAD: Right. Who was your favorite person?

PIPPIN: Justin. Justin Sainton is my favorite person for putting it on.

BRAD: Nice. That was on the Oregon coast, right?

PIPPIN: Yeah, it was just about like an hour and a half to the southwest of Portland. I don’t know my Oregon geography very well.

BRAD: Right, right.

PIPPIN: Yeah, it was right on the coast, so we just had a really big house that was just located — I mean, we were 100 feet from the beach.

BRAD: I’ve heard good things about the Oregon coast.

PIPPIN: It was beautiful.

BRAD: Yeah.

PIPPIN: It was chilly, but it was beautiful — at least chilly for me. I mean, I’m from Kansas, and right now it’s 95 to 100 degrees every day.

BRAD: Right, right.

PIPPIN: Going down to where it was like 45 at night and 60 during the day was a little bit different.

BRAD: Yeah, no doubt. Are you — you got some other WordCamps on the horizon, don’t you, or not other WordCamps?

PIPPIN: I’ve got a couple coming up.

BRAD: Word Camps.

PIPPIN: Yeah, I’ve got a couple different events. I’m traveling all of next week just for, I think, the first actual vacation that I’ve taken. I’ve done a lot of traveling recently, but not just for fun. Tomorrow, I’m flying to Canada to go visit family. But beyond that, we’ve got WordCamp Kansas City coming up in July, and then WordCamp New York is at the beginning of August, and WordCamp Omaha is in the middle of August, and I’ll be going to all three of those.

BRAD: Nice.

PIPPIN: Yeah. Are you traveling at all any time soon?

BRAD: No. I play ultimate Frisbee during the summer, competitively. We travel all over the place. I’m going to be in Boston next weekend, and then Ottawa next month, and then for nationals, Canadian nationals in August.

PIPPIN: Nice.

BRAD: That’s a pretty full schedule during the summer, so I can’t really fly. I think my wife would kill me if I did any more traveling than that.

PIPPIN: Yep.

BRAD: And then we’re expecting our second child in September, so kind of write off —

PIPPIN: Hey, you’re just ahead of us.

BRAD: Oh, is that right?

PIPPIN: Yeah, we’re expecting our second in October and so, after WordCamp Omaha, I’m done.

BRAD: Yeah, exactly.

PIPPIN: I’m taking the next like four months off.

BRAD: Yeah, I’m pretty much writing off everything up to Big Snow Tiny Conf in January.

PIPPIN: Nice. Very cool.

BRAD: Yeah.

PIPPIN: Something that was fun about BeachPress because it was so casual, I mean aside from just getting to know a lot of people, meeting new friends, and getting back together with old friends. Because of how casual it was, we were able to do some good co-working, and so there were two things for me that came out of it. One, we managed to get some nice traction on some WordPress Trac tickets, which was cool. But we also managed to get EDD version 2.0 pushed out finally, which kind of made me happy. That’s something I’ve been working on for the last, like, four months.

BRAD: Yeah. Congratulations!

PIPPIN: And managed to not push out a point release the same day.

BRAD: Wow.

PIPPIN: Achievement!

BRAD: Yeah.

PIPPIN: My last four releases have had, like, a point release pushed out either with a day or within 36 hours because of something that we found, and so this is the first time in, I think, six months that we haven’t had a point release after a major version.

BRAD: I mean, that’s pretty typical of the big projects anyway, right?

PIPPIN: Oh, I think it’s really typical.

BRAD: Yeah.

PIPPIN: Yeah. Any time that you have a release, whether it’s a plugin or WordPress Core or a giant theme that you have been working on for six months, there’s some little thing that’s going to slip through the cracks.

BRAD: Yes. Yeah.

PIPPIN: Which is why I have no problem pushing out a point release because I’m much more interested in making sure that we get problems fixed than we annoy people because they installed two updates.

BRAD: Yeah, and a lot of people will hold off for like a week before they install that update.

PIPPIN: Oh, yeah, and so even if you do push out a point release on the same day, the number of people that are going to have to install both is pretty low.

BRAD: Exactly, yeah. That’s why I’m a big fan of, you know, correcting those little issues immediately. It’s a good idea.

PIPPIN: Absolutely.

BRAD: Yeah. Cool!

PIPPIN: Something else that was kind of cool with BeachPress, I managed to get a new plugin written called Batch Comment Spam Deletion.

BRAD: Oh, yeah.

PIPPIN: I ran into a problem. It actually occurred to me, like, as I was flying to BeachPress. I was sitting there on the plane with plane Wi-Fi, was logged into my site, and I noticed that I had 43,000 comments in spam. Yeah. I mean, they just built up over a couple of months, and they were all there. I was like, you know, I should clear these out. There’s no reason for these to sit here.

BRAD: Are you using a Kismet?

PIPPIN: Yes.

BRAD: Okay. And they still sit?

PIPPIN: The Kismet does not work on my site right now.

BRAD: Oh, okay.

PIPPIN: I don’t know why. It doesn’t. I mean it catches them in terms of in that it gets them, puts them into spam, but it’s not auto deleting anything.

BRAD: Right. Huh.

PIPPIN: But anyway, so I had 43,000 spam comments sitting there. And, okay, I should clear these out. So I click “empty spam”. Well, if you’ve ever tried to delete 43,000 spam comments, it kills your server. I mean it just slaughters it because the way that the “empty spam” function in WordPress work is it actually performs a query to get all of the IDs, every single comment.

BRAD: Oh, boy!

PIPPIN: So it does a select var on the comment post ID.

BRAD: Yeah.

PIPPIN: It gets all of the comment IDs, and then it loops through every single one of them.

BRAD: Oh, dear God!

PIPPIN: And calls WP delete comment.

BRAD: Why does it do this this way?

PIPPIN: Well, I was thinking about it because I was thinking this seems really silly, and I realized that some of it probably has to do with the fact of —

BRAD: Hooks.

PIPPIN: WP delete comment fires the hooks that you might want, which is pretty important. It also deletes all comment meta associated with the comment. And so at first I was a little peeved to see that that was how it worked. Then I realized, oh, wait; actually it makes sense.

BRAD: Yeah, it does.

PIPPIN: The problem is it simply doesn’t scale.

BRAD: Right.

PIPPIN: So I decided to attack it with a plugin, so I wrote a little plugin that replaces the “empty spam” function with one that processes it in batches.

BRAD: Yes.

PIPPIN: And so it’ll do a batch of 100 at a time, and then it just iterates through them. So it does 100, and it does another 100, and it does another 100.

BRAD: How did you accomplish that? Did you use just ajax requests to batch them?

PIPPIN: I didn’t do it with ajax. I would like to maybe do a version 2.0 that uses ajax because it would be cleaner. It would be better for the user. What this does is it uses a step procedure and does a redirect, and so it deletes 100, redirects, deletes 100, redirects. And it does it in such a way that it will never cause a redirect loop.

BRAD: Right.

PIPPIN: And it will successfully delete 100,000 spam comments without killing any server or without failing.

BRAD: Or timing out, yeah.

PIPPIN: It will take a little while, but it will do it. And so that was fun, and that was something (indiscernible).

BRAD: Timeouts are the other issue there, right, because if you’re running something like, you know, Nginx, for instance, it doesn’t respect the set timeout PHP function.

PIPPIN: Right, so in this case it doesn’t matter what your set timeout is.

BRAD: Oh, that’s what I mean, yeah.

PIPPIN: As long as the server has the ability to delete 100 comments at a time, which is not hard to do–I mean, that’s a pretty small request in terms of the timeout speed–it will never fail.

BRAD: Right. No, I meant before your plugin if you just did —

PIPPIN: Oh, yeah, yeah, yeah, before it.

BRAD: Yeah.

PIPPIN: Yeah, certainly.

BRAD: You would definitely get a timeout.

PIPPIN: In my case, when I ran into the issue, I was able to delete about 1,000 comments at a time before it would just timeout.

BRAD: Right. That’s funny. And then you could end up with like partial —

PIPPIN: So yeah, so that was the plugin I wrote. I wrote it at BeachPress.

BRAD: You could end up with like partial data there too, right? Like you could end up —

PIPPIN: Yeah.

BRAD: Like it could delete the meta —

PIPPIN: Like you might have a comment that was deleted, but the meta wasn’t.

BRAD: Yeah. Yikes.

PIPPIN: Which actually I’m pretty sure has happened to me because I recently migrated my personal site from one host to another and, when I was doing that migration, I noticed that my comment meta table was enormous. I mean, it was like ten times larger that the rest of the database combined.

BRAD: Right.

PIPPIN: And I think a lot of it was actually because of comment meta that was left over from comments that had been deleted, probably because of that exact problem.

BRAD: Right, yeah, most likely.

PIPPIN: Yeah, that was something else that came out of BeachPress that was fun.

BRAD: Cool.

PIPPIN: Yeah, anyway, what have you been doing recently?

BRAD: Well, we have been getting Migrate DB Pro 1.4 beta out with the CLI add-on, so you’re able to — this is all beta right now, but we haven’t gotten any bugs reported yet.

PIPPIN: I used it.

BRAD: Yeah.

PIPPIN: I migrated a live site with it a couple days ago with the beta.

BRAD: Yeah, that’s awesome. And it worked, so that’s good. We’ve got a pretty rigorous testing system that we go through or process, I guess I would call it. And so, yeah, it seems to be in a good spot, so our testing seems to be working pretty well. But anyway, the CLI add-on allows you to run migrations using WP-CLI, so you can just run a command from the command line and give it the profile ID that you’ve set up using the GUI. And it’ll just run that migration from the command line. So you can do things like set up a Cron job to run overnight and migrate, you know, get the latest live database down to your local dev environment. Then when you get to your machine in the morning, it’s like ready to go, you know.

PIPPIN: That is cool!

BRAD: Yeah, so that’s been our biggest request, feature request, is just being able to automate their migrations, and so people are pretty pumped for this, so it’s pretty exciting.

PIPPIN: Yeah, that’s really awesome.

BRAD: So if you sign up for, you know, if you get a license for Migrate DB Pro right now, you can get the beta. Just download it from my account, so it’s not like an exclusive thing or anything.

PIPPIN: Yeah, that’s what I saw the other day because I was installing a new — I was downloading a new version to install on the site that I was migrating. And I noticed the beta, so I went ahead and tried it, and it was awesome.

BRAD: Yeah. That’s great.

PIPPIN: It worked. I mean, I didn’t notice any issues. Everything worked well for me.

BRAD: That’s great.

PIPPIN: Yeah.

BRAD: Yeah. You were having problems with, like, a CDN at one point or something. CloudFlare, I think you said.

PIPPIN: Yeah, I think CloudFlare was causing those problems. It was interesting because we pushed it up. I had it on the dev site, and then I pushed it over to the live site. The idea was, I was going to pull from the dev to the live.

BRAD: Right.

PIPPIN: And, for some reason, CloudFlare actually cached one of the JavaScript files. Well, it cached a minified version and, during the minification process, it broke some function in the JavaScript file.

BRAD: Wow!

PIPPIN: And then it cached that file.

BRAD: Wow!

PIPPIN: And it took me an hour and a half to get that cache cleared out. There’s something about the CloudFlare caching system that is just ridiculously hard to overwrite.

BRAD: Right.

PIPPIN: I don’t know if it’s just because I fail miserably at something.

BRAD: No, I’ve heard that cache invalidation is an extremely difficult problem when you’re talking about a CDN. I have no idea of how it works, like the inner workings of it.

PIPPIN: Yeah, I have no idea, but it took us forever to get it figured out. Eventually we got it. Then once we cleared it out, everything worked great.

BRAD: Yeah. I run Amazon CloudFront on my blog just kind of as an experiment to experiment with a CDN. Every once in a while I have to run a cache invalidation there, and it takes like five minutes to ten minutes to run this invalidation. And we’re talking about just invalidating one CSS file; it takes this long.

PIPPIN: Yep, and this was just a JavaScript file.

BRAD: Yeah.

PIPPIN: I mean it was tiny.

BRAD: Like I said, I don’t understand what’s going on in the background there, but I’ve heard it’s not pretty.

PIPPIN: Yeah. I don’t really know, but it was interesting because, for the longest time, I didn’t realize that it was a cache problem, and so I was sitting here like why is this erroring out? This server is identical to dev; the same plugin. I’m looking at the file on the server and it’s still breaking.

BRAD: Right.

PIPPIN: Brad, help me. Oh, not your problem.

BRAD: Yeah, yeah, yeah, exactly.

PIPPIN: But we used it to launch a new site. My brother runs a company called CG Cookie, and it’s an education site for 3-D modeling, concept art, and things like that. Anyway, so the software that they run on is called Blender 3-D, which is another open source project similar to WordPress, but something that Blender 3-D does not have is the commercial sphere that WordPress has.

BRAD: So Blender 3-D is like a desktop software.

PIPPIN: Yes.

BRAD: For doing 3-D modeling. Is it?

PIPPIN: Yep, 3-D modeling, animation, texturing, things like that.

BRAD: Okay.

PIPPIN: So it can be used for games, movies, advertisement, what have you, lots of different things. But so Blender is kind of — it’s in the same kind of position is WordPress is in terms of the way that the project works. It’s all open source. But they don’t have that commercial sphere.

BRAD: Right.

PIPPIN: So if you think about, like, look at WordPress five years ago when commercial products were really just starting to come about. There were a lot of people that were pretty against it. A lot of people saying things like, well, how can you sell an open source plugin? How can you make money off of this? This is wrong — things like that.

Anyway, what was cool about this new site that I helped my brother launch earlier this week is that it’s the first commercial marketplace for Blender software for add-ons and things like that. And so it was fun to launch this project. It’s called Blender Markets or cgcookiemarkets.com. It was cool, for one, because I was able to work with my own stuff, so it’s all powered by Easy Digital Downloads and some of our extensions, as well as Affiliate WP and a couple other plugins. It was cool for that, but it was also cool because I got to have a new look where we used to be in WordPress because they are in that exact spot that we were five years ago with commercial products.

BRAD: Do they have — so does Blender have the equivalent of the WordPress.org repo where they’ve got like free stuff?

PIPPIN: I don’t think there’s an official repository. There are definitely a lot of sites that do have their own little repositories, but I don’t know if there’s one specifically, like an official one.

BRAD: Right.

PIPPIN: And so there is definitely not really a way for people to get their products out there aside from their own site. And so think of something like CodeCanyon and The Envato Marketplaces, which has been huge for a ton of people to get into the commercial sphere for WordPress.

BRAD: Mm-hmm.

PIPPIN: Some people have done it very successfully, others maybe not as successful. Some people opted to stay there. Some people moved off of Envato. But this new site is basically the Envato for Blender, and I think it’ll be really cool to see them transform and see the open source community around Blender transform into something similar to WordPress.

My brother actually sends me discussions that they have all the time where somebody mentions a commercial product and people were like, oh, well, how dare you sell a commercial plugin. That’s just not right to sell an open source project. And then he always points to WordPress and be like, look; this is the same system. It’s an open source project that has a really vibrant, commercial sphere. Why is this any different?

And so Blender Market, cgcookiemarkets.com is the site that we just launched that I’m really excited to watch and see what that does. That’s what we used WP Migrate DB Pro for was to move to launch their live version.

BRAD: Yeah, that’s cool. Did you–? So I see that it redirects when you go to cgcookieamericas.com. It redirects. What’s up with that?

PIPPIN: It goes to /blender, the reason being, so their main network of sites, which is cgcookie.com, it’s a big multisite install. Then they have cgcookie.com/blender, cgcookie.com/max, and so they have all of these different sites dedicated to different kinds of software or to topics. They have one called /concept, which is concept art.

And so cgcookie.com/markets is going to be the same thing. They’re going to be launching marketplaces for other software as well, such as like 3-D … max or maybe for like concept art, which would be like Photoshop add-ons and things like that.

BRAD: Okay.

PIPPIN: But Blender Market is the first one, so they’re just sending everybody there.

BRAD: That’s cool. Yeah. Did they do like a big release for this?

PIPPIN: Right now it’s kind of a soft release, so they haven’t.

BRAD: Right.

PIPPIN: There hasn’t been a lot of marketing push on it yet.

BRAD: Right.

PIPPIN: But they’re going to be doing that pretty soon. The first few days we’re kind of like, hey, let’s get it live and make sure that we don’t cause any major problems.

BRAD: Right. Is that what your brother does, he does CG stuff?

PIPPIN: Yep.

BRAD: Okay, cool. Does he still do that, or is this his full time thing now?

PIPPIN: Yeah, he does it full time.

BRAD: Okay, cool.

PIPPIN: Something that’s also kind of cool that they’re doing with the site — I might have to rescue my daughter in just a second — is that they’re actually using the site to help fund the development of the core software where authors can actually sign up, and they can give a proceed of their commissions to the Blender development fund.

BRAD: Ah!

PIPPIN: And that was a fun little feature that I got to build for Easy Digital Downloads where an author can submit their product, and they can say yes; I want to contribute to the fund. Here’s the percentage I want to contribute. Then it calculates all of those things automatically and donates that money to the foundation.

BRAD: Right. That’s cool.

PIPPIN: Which is kind of cool. Yeah.

BRAD: Totally. Right on. Something else I’ve been working on that’s been taking up a lot of my time just recently is I’ve been redesigning DeliciousBrains.com because, I mean, it hasn’t been redesigned since we launched over a year ago, and we’ve changed quite a bit since then. The product has changed a lot. Like, for instance, there was nowhere for add-ons to go, really, because we didn’t have add-ons when we started.

PIPPIN: Sure.

BRAD: So we kind of have to, I have to re-jig things to make room for them. And so that’s, you know, been taking up a lot of my time. I’ve been kind of wondering if I should have hired someone to do this. Before I started, I was thinking of hiring someone. But now that I’ve gotten into it, I’ve realized it’s a good thing I didn’t because there are so many little things that I realize after, like as I’m designing, as I’m doing this and that, like oh, yeah, I remember that customer saying this. You know, and so all these things are influencing where, how I lay things out, how I structure things, and what copy I write.

PIPPIN: Are you thinking of — so right now you have Delicious Brains. It’s the Delicious Brains website, and then there’s a page for WP Migrate DB Pro, basically.

BRAD: A section, yeah.

PIPPIN: Are you restructuring it so that WP Migrate DB Pro is the focus?

BRAD: I am, but it’s still going to be under DeliciousBrains.com because we will be launching additional products this year, and so we’re just going to launch them under the same umbrella site. If you go to deliciousbrains.com/wpmigratedbpro, it’s going to look a little bit different than the rest of the site, and it’s going to be very focused on Migrate DB Pro, and the Delicious Brains branding and stuff kind of takes a backseat.

PIPPIN: Sure.

BRAD: Anyway, you’ll see what I mean once it’s launched, but hopefully —

PIPPIN: Yeah, that’s cool. Looking forward to it.

BRAD: Yeah, the biggest thing with it is like I’ve been doing A/B testing and all these little incremental changes. Then this change is just this massive thing, right? It’s like, okay, I hope conversions go up. Right?

PIPPIN: Yeah, definitely. Rebranding my personal site is something that I’ve been wanting to do for the last year. I mean, PippinsPlugins.com hasn’t changed in two or three years. It’s on the second design the site has had, but that’s it, over the lifespan of four or five years. And so, it’s been due for a revamp for a long time, but it’s one of those that I really want to do it myself, but trying to figure out how to give myself the time to actually do it.

BRAD: Yeah.

PIPPIN: It’s very easy to say I’ll do it next week. I’ll do it next month.

BRAD: Yeah, it’s very easy to say yeah, and do it is another thing.

PIPPIN: Yeah, especially when there’s not necessarily major problems with it right now.

BRAD: Right. Yeah, I mean that’s the thing. There must be things that bug you about it though, like oh, I wish this was like that.

PIPPIN: Oh, there are tons of things that bug me.

BRAD: Yeah, yeah, yeah.

PIPPIN: But sometimes they’re not necessarily enough to push me over the ledge to decide to spend 20 or 30 hours doing it.

BRAD: Right. It may be just chipping away at it is the better….

PIPPIN: Yeah, that’s what I’ve been planning to do. It’s just a matter of getting that started.

BRAD: Yeah. That’s kind of what I started out planning to do. I was just going to redesign the features page and the pricing page. Then now I’m doing the checkout and my account and, you know, it’s just —

PIPPIN: Yeah.

BRAD: Just a snowball.

PIPPIN: I was originally going to start it by just redoing the page for my Restrict Content Pro plugin. The way that that plugin is built, it’s kind of similar to your scenario where you have Delicious Brains, and then you have a page on there for WP Migrate DB Pro. Okay. Where do you host the add-ons? Where do you host the documentation, all of those things?

BRAD: Mm-hmm.

PIPPIN: I have that exact same problem with Restrict Content Pro, and so I’ve been debating between rebuilding the site in such a way that it’s easy for me to section those pages out, or to just build a completely new site for Restricted Content Pro.

BRAD: Right. How do you feel about that, like the separate site for each product versus like a single site? Yeah, an umbrella site, let’s say.

PIPPIN: So part of me loves it. I mean it’s so much easier to set up documentation, to set up support articles, things like that, when there is an entire site dedicated to one product. For example, if I was to add a documentation link to the navigation in PippinsPlugins.com, well, what does that refer to? What plugin? There’s over 100 plugins on PippinsPlugins.com.

BRAD: Sure.

PIPPIN: How is somebody going to know that that’s Restrict Content Pro documentation? When you have a dedicated site for a product, you get rid of those problems. But you might lose some of the strong branding that comes with that, the other site.

BRAD: Right.

PIPPIN: PippinsPlugins.com has much stronger branding and recognition than, say, RestrictContentPro.com does.

BRAD: Right.

PIPPIN: And so I have not figured out what to do with it.

BRAD: Right, right. Yeah, I mean, that’s kind of what I was thinking is that if you have a brand that’s an umbrella brand that, you know, above all these products, then that can be — you can kind of strengthen that brand, and your customers who are, maybe there’s customers just for one product, and they go to your site to view documentation or whatever. And they see that you have another product, right? You know, they can cross over between products very easily.

PIPPIN: Yep.

BRAD: Versus if it’s separate sites that are on these islands, it’s sometimes hard to kind of bring those together.

PIPPIN: Certainly. I had somebody tell me the other day they were purchasing Affiliate WP. They were also an Easy Digital Downloads customer, and I think they were a customer of PippinsPlugins.com too. And they said, well, why don’t you just have them all under one site? I mean, you are the main person behind these products. Why are they on separate sites? I would love to have my one central account history.

BRAD: Right.

PIPPIN: And it was a good point.

BRAD: Yeah.

PIPPIN: And that was something that I had not really considered.

BRAD: That’s interesting.

PIPPIN: Again, it’s an interesting battle to try and figure out. Do you separate your products out? Do you put them on their own sites? Do you put them all in one site?

BRAD: Right.

PIPPIN: What about putting them all in the same site, but you could design each page to be very different.

BRAD: That’s exactly what I’m doing.

PIPPIN: That’s kind of what I’ve been contemplating doing.

BRAD: Yeah. I mean that’s what Apple does, right?

PIPPIN: Yeah.

BRAD: Each section of their site is very, very different.

PIPPIN: It’s still Apple.com, but it’s apple.com/ipod, apple.com/macbook, things like that.

BRAD: Exactly.

PIPPIN: And each one looks very different. And I like that idea.

BRAD: Yeah, yeah.

PIPPIN: Speaking of products, I did something yesterday. This is, I think, maybe the second time that I’ve really done this. I discontinued a commercial plugin.

BRAD: You bastard!

PIPPIN: How dare I. It was kind of bittersweet. It was one of the first maybe three or four commercial plugins I wrote, so the plugin was about three or four years old at this point. It was sold on CodeCanyon, and it was called Sugar Modal Windows, and so it was a plugin for creating popup modal windows that you could insert into a post or page. And so you’d just have a button, you’d click it, and it would open the modal.

The plugin did pretty well. I mean it was never a get rich plugin by any means, but it did pretty well for itself considering how much time I spent building it and things like that. But over the last six months or so, it’s been kind of a headache to support. For one, because it has just enough support that I do have to focus on it. There are some plugins that get a support ticket every two months, and so if you get a ticket, it’s not a big deal.

This one had a support ticket raised at least two or three times a week, and so it had a decent amount of support, but it was a bit of a headache to support. Because it was an older plugin, it did some things in ways that were not necessarily that reliable, ways that, as a developer, I personally didn’t like them. So I kind of battled with myself every day when I was supporting it.

BRAD: Right.

PIPPIN: And so, today, or yesterday, I decided to officially close the plugin. And I had some comments come in from Twitter that I want to bring up and I think are a good topic for discussion. There were a couple questions. One, did you consider selling it to someone else to let them continue it? Consider giving it to someone else? Then someone asked — I mentioned that for me it was not about the dollars that the plugin brought in. It was the headache that the support caused. Would I consider just giving it away on .org, or would I consider giving it to someone else to give away on .org?

I think these are all really interesting questions to consider when you discontinue a commercial product. I have various answers to them but, Brad, what do you think? When you discontinue a plugin, and this is a plugin that people have paid for and that people are definitely still actively using, what do you think are some of the things to keep in mind that you should probably do?

BRAD: Yeah, that’s tough because you have so many other things going on, and this is really just a distraction at this point. It was great in the beginning. It was giving you a little bit of income, and you got your feet wet in the commercial plugin market, so it was definitely good in the early days, but now it’s kind of a burden for you.

PIPPIN: Yeah.

BRAD: Yeah, I mean, and it’s not easy to sell something like this. I mean that becomes an even bigger burden all of a sudden, right, when you’re trying

PIPPIN: Right. Is it worth it to go through the trouble of selling it?

BRAD: Yeah. It’s GPL though, right, this thing?

PIPPIN: Yep.

BRAD: Right, so I guess releasing it or getting someone to adopt it would probably be the best course of action if you can find someone fairly easily and, with your audience, that probably wouldn’t be that hard to do. The tricky part there though is that it’s a paid commercial plugin, right?

PIPPIN: Mm-hmm.

BRAD: Then that person now is on the hook kind of to support those —

PIPPIN: Support all past customers.

BRAD: — past customers, right?

PIPPIN: Yeah.

BRAD: They would almost have to, like — I think if they rebranded it, if they rebranded it as their own thing and then let those customers know this guy is rebranding this thing. He’s basically forking it and starting it up again.

PIPPIN: Yep.

BRAD: You can jump onboard with him and, you know, go from here with him.

PIPPIN: Yeah.

BRAD: Or you can just keep using what you’re using now, you know.

PIPPIN: And that’s exactly what I’ve — if it does get handed over to anybody else, that’s probably what will happen. At this point, I’m not really interested in actively reaching out to find somebody to do that. But if someone was to approach me and say hey, I would be interested, then absolutely.

BRAD: Right, so if anybody —

PIPPIN: Honestly, I don’t even really have that much interest in selling it. I will happily give it away to someone.

BRAD: Right.

PIPPIN: If they want to then sell it on their own, or they want to redistribute it, and however they choose.

BRAD: Yeah.

PIPPIN: The issue for me was simply —

BRAD: I mean they could have done that before, technically, because it’s GPL, right?

PIPPIN: Yeah, absolutely.

BRAD: They could have forked it.

PIPPIN: Yeah, there’s nothing stopping someone from doing that.

BRAD: Right.

PIPPIN: But in this case, let’s put it this way, as opposed to just forking and doing it, here, I will happily give it to you.

BRAD: Right, yeah.

PIPPIN: Yeah, because it did become — it became a support headache not necessarily because of the problems the plugin encountered or the support issues that were raised, but time.

BRAD: Yeah.

PIPPIN: With a lot of things going on, I need to try and narrow my focus and to decide to put my time where it’s more important.

BRAD: Yeah. I mean you probably developed this thing because you had a need for it at the time too, right, I’m guessing.

PIPPIN: Honestly, at the time I built it because I thought it sounded like a cool idea.

BRAD: Okay.

PIPPIN: Which something that I’ve learned over the last three years in building plugins, personally, and I’ve seen some very well known people in the community say the exact opposite of this and adamantly disagree with me. But I really don’t, at least for me personally, I do not believe in building products that do not scratch my own itch.

BRAD: I completely agree.

PIPPIN: Okay. I don’t like building products that I don’t personally use because I am much less empathetic of problems.

BRAD: Yes. I completely agree.

PIPPIN: It’s much easier if you have a product — and this plugin was a perfect example of this. If somebody, if a user comes to me and says I have a problem, I’m trying to do this, and I don’t personally use the product, and I don’t personally experience those problems day-to-day, it’s much easier to say I’m sorry; it just doesn’t work that way.

BRAD: Yeah. I mean you just have less invested in it, right?

PIPPIN: Absolutely.

BRAD: You don’t care as much, right?

PIPPIN: Yeah.

BRAD: But if someone comes to you, and you’re using — you’re using EDD to power your primary business right now, right?

PIPPIN: Mm-hmm.

BRAD: And it’s your product. And so if someone comes to you with something, you’re like yeah, I’m going to look into that. You’re damn right.

PIPPIN: Yeah. For example, over the last three days, we had a bug in EDD 2.0 that, in some bizarre cases, one that I could never reliably replicate, there would be a random error on the checkout screen that would say that payment gateway is not active. And it would only apply when a discount code was used. If I were not using EDD, I would say yes, we’re going to get this resolved because that’s kind of a serious problem because it prevented a purchase from going through. But it would not be as important to me if I were not also experiencing that same problem.

BRAD: Right.

PIPPIN: Over the last three days, I had multiple customers come and say hey, I’m trying to purchase an add-on from you with this discount code, but it won’t let me. So suddenly it’s become a personal problem that affects my business as opposed to affecting one of my users.

BRAD: Yeah.

PIPPIN: And so it’s much, much closer.

BRAD: It’s definitely — I think it’s definitely better to scratch your own itch when you can. But, you know, I’m not going to —

PIPPIN: It doesn’t mean that you have to.

BRAD: Yeah, it doesn’t mean you always have to. I mean there are definitely cases where I could see myself getting really invested in a product idea.

PIPPIN: Sure.

BRAD: And really wanting to, you know, hammer it out and make it awesome, you know.

PIPPIN: Yeah, absolutely.

BRAD: I could see that, but yeah, it’s definitely easier when you scratch your own itch because — and I found myself, like I’ve had plugins where I scratch my own itch and, you know, I kept developing them for a while. Then I stopped using that plugin, right? A good example: Live Comment Preview. That was a plugin I had for a while because I had these live comments. The way it worked is, as you would type your comment in, it would show up on the screen.

PIPPIN: I’ve seen that plugin used before.

BRAD: Yeah. Quite a few people still use it, but I wasn’t using it anymore, right? And people were reporting bugs, and I was like, I don’t care that much anymore. It’s just this little plugin that I don’t use anymore, and I’m still supporting it. It just didn’t —

PIPPIN: Yep.

BRAD: It just doesn’t line up for me.

PIPPIN: Well, and it might —

BRAD: And so I gave it up for adoption, and someone else is maintaining it now that actually uses it and has a stake in it.

PIPPIN: It’s still under your name. Did you know that?

BRAD: What’s that?

PIPPIN: It’s still listed under your name. Did you know that?

BRAD: I think my name is still on it, but there’s someone else on it too, right?

PIPPIN: Nope, just you.

BRAD: Ah, crap.

PIPPIN: I’m looking at it right now. Oh, crap, now I’ve got to do something on a plugin I don’t care about anymore.

BRAD: Yeah. Sometimes that happens.

PIPPIN: It does. I mean, I have several plugins in the repository that are that way. For example, I have a small event calendar plugin. I really like the plugin, actually, and I really enjoyed writing it, but I don’t actually use it on any of my sites, and so it’s much more difficult for me to say, when somebody reports a bug, especially in the free version, to drop things that I’m working on that I have a vested interest in to go fix it.

BRAD: You know what it is? I gave them access to the GitHub repo, but they haven’t updated the .org site.

PIPPIN: Oops. Nice.

BRAD: I think that’s what happened.

PIPPIN: Nice.

BRAD: We’ll have to get that sorted out, but anyways if anyone else wants to work on Live Comment Preview, let me know.

PIPPIN: The same thing with Sugar Modal Windows. Anybody who wants it, it’s pretty much open for adoption.

BRAD: There you go. Adopting plugins is great. You know, it’s such a great way —

PIPPIN: It is. I gave up another plugin for adoption recently and had it successfully taken over.

BRAD: Nice. Which one is that?

PIPPIN: I love the idea of continuing a plugin and letting someone take it because it is sad to see a plugin completely die, regardless of what the plugin does.

BRAD: Especially if it has a lot of active users and a lot of people.

PIPPIN: Yeah.

BRAD: So we actually just adopted a plugin as well. It’s for excerpts. It’s called Advanced Excerpt plugin. And it’s kind of a boring plugin, to be honest. All it does is give you more control over excerpts in your templates and themes. For example, if you’re using a theme off the .org repo or something, and you don’t want to have to modify it to change the way the excerpts show up, you would use a plugin, this plugin, to do that.

PIPPIN: Mm-hmm.

BRAD: It gives you complete control. You can choose how many words you want to show in your excerpt and all that kind of stuff.

PIPPIN: That’s cool.

BRAD: Anyway, this thing was well over the two-year period that, you know, it hadn’t been developed for two years, so it had that yellow bar at the top on the .org page.

PIPPIN: Yep.

BRAD: And so we decided, you know, let’s just take this over. We’ll make it. We’ll just roll it into the cost of the business, and we’ll handle this because, I mean, this thing gets — it’s heavily used, still. Last week it had 7,000 downloads.

PIPPIN: Wow.

BRAD: Right? I figure, you know, this is a good way for us to contribute to the WordPress, just kind of give back. And for us, I think, like, we put a little — on the admin page, we put a little shout out to WP Migrate DB Pro, right, to give us a little bit of credit there for maintaining this.

PIPPIN: Sure.

BRAD: But that’s about it, so I don’t know. Now that I think about it, we should just adopt Live Comment Preview as well.

PIPPIN: Readopt it, you mean?

BRAD: Yeah, because, I mean, I was looking at it from the point of view it’s my plugin personally, right?

PIPPIN: Right.

BRAD: But, yeah, we could totally adopt that and….

PIPPIN: That’s one of the things that’s cool when you start getting — when you have a team built up of people that you’re working with is that you can have a plugin like that that you may personally be maintaining or you may be the one that wrote it, but when you have that team of people working with you, it can become a team effort.

BRAD: Mm-hmm.

PIPPIN: And so supporting it, either supporting it or fixing bugs is much less of a burden on you.

BRAD: Absolutely, yeah. And you just make it part of the business, right? It’s just part of the business. It’s just part of the day-to-day.

PIPPIN: Yeah.

BRAD: It’s much easier than trying to maintain it in your spare time when you’re working a full-time job and, you know, that’s kind of the reality for a lot of people that have plugins on .org, right? This is their spare time that they use to develop these things.

PIPPIN: Yep.

BRAD: You’re starting to see that a lot more in the WordPress community, right? People donating time to, you know, WordPress Core or to plugins, to maintain.

PIPPIN: Yeah. Just as an example, WP Engine right now is trying to hire two new developers to work on WordPress Core full time.

BRAD: Right.

PIPPIN: That’s their only job at WP Engine.

BRAD: Yeah.

PIPPIN: And I think that’s fantastic.

BRAD: And doesn’t — DreamHost does that as well. I think Schroder —

PIPPIN: Yeah, I don’t remember if he works full time on Core. I mean he does a ton. He works on Core a ton.

BRAD: Right.

PIPPIN: But I don’t remember if that’s his full-time position at DreamHost or if it’s part time.

BRAD: Right. Still though, that’s —

PIPPIN: But still, it does; it benefits those.

BRAD: Yeah.

PIPPIN: It benefits those companies, whether it’s DreamHost or WP Engine or somebody else because their business is built around WordPress.

BRAD: Mm-hmm.

PIPPIN: And so if you can pay someone to help contribute back to WordPress Core, and maybe address some of the issues that you encounter, fantastic. And, I mean, good for you.

BRAD: Yeah, exactly. Yeah, I think it just lines up, right? Those interests all line up, so it makes complete sense, right?

PIPPIN: It’s something that I’m really interested in pursuing more in this next year, both with myself and anybody who is working with me, is giving back to Core more frequently.

BRAD: Right.

PIPPIN: I’m trying to actually get into the habit of setting aside like one day of the week that is for WordPress Core. I haven’t done it yet, but that’s kind of my goal where that day or maybe that afternoon is doing nothing but working on WordPress Core.

BRAD: Right.

PIPPIN: WordPress Core is hugely responsible for where I am today.

BRAD: Right.

PIPPIN: WordPress Core, I mean, every single one of my products runs on top of WordPress, and so not only do I feel a little bit of obligation to give back and donate to something that empowered me so much, but also it’s a good idea from a business perspective because all of my products run on top of it.

BRAD: Sure. Yes, absolutely. Here’s a question though about Core. I mean, if you get onto a Trac ticket that’s, you know, getting pretty popular, I will say, you get the impression almost that there’s too many cooks in the kitchen. There are so many people working on one ticket or commenting on a ticket. How much more, like, do they need your help is what, I guess, what I’m getting at? Is there already enough people working on WordPress Core?

PIPPIN: Well, here’s the thing. I think there are definitely tickets where you can say there is not help needed because there are too many cooks in the kitchen. But let’s see if I can pull up a quick number real quick.

BRAD: Is there just so much work that there are definitely not enough people to–?

PIPPIN: There are definitely not enough. Real quick, I’m just going to pull up the report that says here’s the number of tickets that do not have a patch. Now these are not necessarily tickets where they’re going to get a patch in, or that this enhancement or this bug is going to get taken care of. But the number of tickets currently in the system that say they need to have a patch — and if WordPress Core will load. It’s going a little bit slow on me. Currently there are 287 tickets that need a patch, and so is there a need to have more people involved to help write patches, to test patches? Absolutely.

BRAD: It sounds like it, yeah, for sure.

PIPPIN: I mean there are tickets that, in this list, I’m pretty sure there are tickets in here that are more than two or three years old.

BRAD: Right.

PIPPIN: Maybe because they’re a low priority, but also just because there hasn’t been anybody to address them yet. And so, yeah, there’s absolutely work for people to do. It doesn’t necessarily mean that there needs to be more people on some of the more active tickets. I mean, I think it’s always nice to have people provide feedback and say yes, I like this approach, or have we considered this, because that’s always helpful. Well, mostly, mostly always.

BRAD: Right.

PIPPIN: Assuming you’re doing it right.

BRAD: Right. As we grow our team.

PIPPIN: But….

BRAD: Yeah. As we grow our team, I’m definitely going to be looking at that. Maybe we’ll do a Core contributor day once a week where, you know, our team just spends a whole day, all of us, working on Core tickets or something like that.

PIPPIN: That would be really cool.

BRAD: That’d be a good idea, right, something like that?

PIPPIN: That’s definitely something that I’m interested in.

BRAD: Yeah.

PIPPIN: Even if you start small, like say, okay, I’m going to work on it an hour every Wednesday.

BRAD: There you go.

PIPPIN: And then I’m going to work on it two hours every Wednesday, and then slowly progress up.

BRAD: Yep. Yeah.

PIPPIN: Yeah, I think it would be….

BRAD: I think the big thing for a lot of people, or at least for me, the thing is with Core it’s like it’s almost intimidating because, like you said, there are 200-and-some tickets. Where do I start? It’s just like this giant mountain that you’re kind of chipping away at.

PIPPIN: Sure.

BRAD: But I guess that’s the point is that you just have to dive in there and find something to work on and work on it, you know.

PIPPIN: I think, as I’ve started to do it more frequently to jump in on tickets and such, I found it helps a lot to look at one component. A component would be like a category. For me, I am subscribed. You can subscribe to email notifications with tickets on Trac for Core. But you can also subscribe to tickets in a specific component. So I get an email notification any time somebody opens a ticket related to plugins because that’s kind of my focus. That’s what I like to focus on.

BRAD: Right.

PIPPIN: And that helps me narrow my focus on Trac tickets, as opposed to just looking through this massive list of tickets and trying to find something. Instead, look at a component. If you like media, look at the media. If you like the Cron API, you like plugins, et cetera. Then you can even narrow that down even further and say I want to work on documentation for plugins. You can take the plugins component with a focus of docs.

BRAD: Okay.

PIPPIN: Or maybe there’s something in the plugins API that doesn’t perform very well, so you can look at plugins and then filter it by performance. And so you could really narrow your focus much more. This is also something that’s come out the last, like, three months as Nacin has been building some of these filtering tools. And that’s helped a ton.

If you’re not interested in writing in a patch, or you don’t know how to, there’s another one. Nacin put in a getting started section where you can quickly just view: I want to look at patches that need testing. These are patches that people have written. All you have to do is apply it and say yes or no; it works for you.

BRAD: Right, that’s awesome.

PIPPIN: Yeah, it’s made it so much easier to jump into these tickets.

BRAD: Right.

PIPPIN: There’s also a tag that Core is using now called Good First Bug, which is basically they are tickets designed that are easier to patch for people, like, for their first time.

BRAD: Right.

PIPPIN: So if somebody is looking for their first ticket to jump into, go look at ones titled with Good First Bug.

BRAD: Yeah, that sounds awesome.

PIPPIN: And I’ve heard the Core developers say that they generally try to not patch those tickets themselves because they’re trying to leave them for people that want to contribute for the first time.

BRAD: Right. Right. That’s cool.

PIPPIN: Yeah.

BRAD: I guess we should probably wrap it up. We’re at 50 minutes here.

PIPPIN: Yeah, I think we’ve been rambling for a while. It’s easy to do.

BRAD: Yeah. Just want to say that you should go to iTunes. If you’re listening to us on iTunes, give us a five star review and leave a little comment, if you want. You don’t have to. You can just give us a five star review. That’s cool too. But, yeah, we really appreciate any iTunes reviews because that kind of boosts our profile on iTunes and let’s more people know about our podcast, so really appreciate that.

PIPPIN: Absolutely. And if you are willing, if you are interested with the rating as well, give us a review. Let us know. That means a lot to us and, in exchange, I’ll happily take a look at your plugin, leave a rating for it, give it a quick review or something like that.

BRAD: There you go.

PIPPIN: Yep.

BRAD: Cool.

PIPPIN: Thanks, everyone.

BRAD: Thanks, everybody.

PIPPIN: Catch you next time.