Listen
Info
- Date2014-04-21
- Duration148:59
- DescriptionAndrew Nacin is a lead developer of WordPress. He talks about his experience on the project.
- Tagscopress, wp-hackers, multisite merge, wordpress 3.0, taxonomies, wordpress.com, release leads, leadership, wordpress 3.5, media, auto-updates, akismet, audrey capital, gpl
Transcript
Interviewer: Okay so I'm talking to Andrew Nacin on the 25th of April. Let's start out, why don't you tell me how you first got involved with WordPress?#
Nacin: First got involved in middle of 2009. With the project, or with the software?#
Interviewer: The software.#
Nacin: With the software. I was working at my student newspaper at the G, at the George Washington University, at the GW Hatchet, in 2007. I had, I had responded to a print classified for a web manager position, and about 4 months later I finally heard back that they needed someone and so I joined there and after about 3 or 4 months of being there and really cutting my teeth on HTML, CSS, things, things like that, little bit of, you know, some PHP, some other things, someone told me that there were some WordPress blogs that I also was supposed to be maintaining. And they were running 2.1 at the time, and I somehow managed to figure out how to, ftp files up to, update them to 2.3, which was the current release, and it was, it was just, it was just a blog just done by some categories, it was really stupid and the design was bad and it wasn't really, there wasn't really anything to it, we didn't use any special plugins or anything like that, but I still had no idea what I was doing. And then a few months later it got to the point where we actually needed to do something new with the blogs. And so we did, and I actually I brought in, I brought in someone at, I brought in someone to help out, and his name was Ben Balter who has been otherwise quite influential with the WordPress project over the years as well. And we became friends, he helped, he helped set up everything so we ended up doing a WordPress Multisite instance, which, on WordPress MU at the time which was an absolutely terrible idea and that got scrapped. And instead we ended up using just a set of different WordPress installations that were kind of tied together, daisy chained if you will. And I had no idea what I was doing still so he was doing most of it, but he started teaching me WordPress and I was teaching him some other things and we both kind of grew as, as you know web developers. We had both been, we had both written code before, but not, not in that context, and so we ended up maintaining this really weird site that had like a bunch of different random WordPress installs, and this, this CMS called College Publisher that the paper, that, most college newspapers had used and, this was a really interesting time because most of the newspaper, most of the newspapers had used this system. And then slowly but surely they were all starting to move to WordPress kind of one by one, and you probably have heard from other people about CoPress and things like that...really?#
Interviewer: CoPress, no.#
Nacin: Oh, that's a, that's actually probably an incredibly underrated piece of WordPress's history. So CoPress was the name of a [3:00] non-profit that was run by Daniel Bachhuber with a bunch of other people. So he was, he was Executive Director, I wouldn't actually say he ran it as much as there were probably six or seven main people involved in it, but the, the people who either came out of that organisation or were like considered friends of that organisation have made a pretty big impact on the community. So Daniel Bachhuber, obviously I mean now he's the maintainer of WP-CLI, he's been in a number of organisations, Spittle, me, Mo Jangda was involved, I wasn't involved but I very frequently was communicating with them. Max Cutler, who did a lot of XML-RPC stuff and is now at Amazon, Scott Bressler, who did a lot of Edit Flow stuff and is now at Amazon, sorry Max is at Microsoft, Lorna Rabaino was at the Seattle Times and brought WordPress in there, she's now at Vox Media, Albert sun is now doing awesome stuff at the New York Times.#
Interviewer: So what was it, CoPress?#
Nacin: So it was this non-profit designed to help college newspapers move to a system of their choice, and it ended up being, we'll do WordPress or whatever, and then it ended up being really just WordPress. But it was really interesting because around this time in 2008, 2009, there was this huge push in media, in college media specifically, to be using WordPress. And I kind of jumped on to that at kind of the right time and I started to really follow a lot of those things which was really cool. Because we weren't using it for the main site, but we were using it for all these other random things. And they didn't actually, I didn't actually move them over to WordPress until well after I was a core committer. Like it took a while, I was not one of the early people to move the rest of the site over. We had 10 years of archives and things like that, it was, it was more of like, it was, the status quo was maintainable for what we wanted to do, we could do more at the moment, and then long term that was the plan. So, so fast forward about a year, middle, middle of 2009, I started really getting, I started doing a lot more WordPress development, and by this point we had since launched a WordPress MU instance to run all the blogs and start to run other things as well that were not even blog related, and we ended up, I ended up subscribing to some mailing lists, and this is kind of what jump started my involvement with the project, moving into the-#
Interviewer: What were you studying, what were you studying at university?#
Nacin: Biological Anthropology. Yeah, human skeletal remains.#
Interviewer: Is that something that you always wanted to do?#
Nacin: That is not something I always wanted to do. I found it, I was interested... I took classes in probably like 20 different departments. Like I, I like, I like knowledge, and I like study, and I like things, but I didn't necessarily find a spot where I really wanted to major in. And so I ended up, I ended up studying [6:00] human skeleton remains at the Smithsonian and I figured that that's really tough to beat so I went with that one for a bit.#
Interviewer: Sounds like fun.#
Nacin: But I mean I, I would've, if I and to restart I would've probably done a Comp Sci degree. But once you're two years in and you realise oh, I could do this. Because I mean really what I, I had wanted to do, I wanted to do like online journalism. I wanted to do you know whether it was the, whether it was like visual, visual journalism, data journalism, and I did, I'd done some, a number of, a lot of computer assisted reporting, things like that, so I kind of wanted to be there. I mean my, I think my, for a bit there my dream job was working on the web, working as a web producer at the New York Times.#
Interviewer: Okay. Why did you want to do that?#
Nacin: I, I mean I have a soft spot for journalism. And at the time I felt that those were where my skills were at. And then eventually I, like I looked up one day and I realised I actually am a developer, I can do these things, I can do way more than this. So we started rebuilding a lot of stuff, and I started to try and do some mailing lists, and none of the mailing lists actually worked at the time.#
Interviewer: Was this wp-hackers?#
Nacin: Yeah hackers, and things like that, I think it was just hackers that I subscribed to originally. But the, the confirmation email didn't go through, so I didn't hear back for 4 or 5 months, and then once I finally got a, if I didn't get that extra, like if Barry or whoever fixed it didn't bother to release all the old ones that got stuck, I don't know if I would have gotten involved.#
Interviewer: So why was it wp-hackers that got you in?#
Nacin: I don't remember what led me to the link.#
Interviewer: Yep.#
Nacin: It wasn't that hackers got me in, because that's, I mean-#
Interviewer: Yeah but if you're, if you're saying, you don't know if you wouldn't've gotten involved if you hadn't-#
Nacin: Well so what happened is that, about 4 or 5 months later I had spent the entire summer doing like a tonne of WordPress development. For the paper, and, and otherwise. And you know, Ben and I were doing like client work together, we were just kind of like hammering on things, but I don't know if it would've been the direction I would've gone in if it weren't for the fact that I eventually got this confirmation email for this mailing list and I clicked it, it didn't work, so then I ended up manually re-subscribing but I had forgotten about it by now, this is 3 months later, I had completely forgotten about, about getting involved in [inaudible], and so I ended up jumping on in August of 2010. This, I found the, the entry, my original email was replying back to the thread saying yeah I just got this confirmation email too, I don't know what's going on. And then I otherwise didn't say anything for a while, and then I just started reading everything. And then I was reading everything there, and then I started reading, then I started subscribing to all of the commits. I started reading all the commits. And then that was probably like a few mo-, like maybe a month later.#
Interviewer: What did you think of wp-hackers at that time, because there had already been discussions [9:00] about canning it?#
Nacin: I don't know if the discussions about canning hackers ever really got to hackers. You know, like I know Jen has always said like we should just get rid of it, or whatever. Honestly, this was in 2010, so, sorry this was in 2009, not 2010. So it was right around the time where hackers, maybe about a year after where hackers transitioned from a, as a Core development communication tool, to a nothing. To having no vision or guidance.#
Interviewer: There's a post from Matt, I think it's 2007, 2008, I can't, I can't remember the exact date but he's like what should we do about wp-hackers, should we get rid of it, on the wp-hackers mailing list.#
Nacin: Okay. Yeah it's, I mean it's obviously a very weird list. I don't, I credit it with just being, very randomly being the thing that I somehow subscribed to that ended up getting, I got this thing in the ma-, this, three months later a boomerang hit me and said hey, you should, you wanted to get involved this. So I really just wanted to learn more stuff, I knew that I was doing WordPress development so I should probably follow along, and I ended up following along so closely that by the time, before I even started contributing I had already for at least a month been reading everything on hackers, every commit, and every Trac ticket and comment. So I had, before I posted a comment on Trac, some conversations on the mailing list are not [inaudible] and if you go back you'll find, like, beginner Nacin saying things. But I just, I just read and absorbed absolutely everything for about 2 months.#
Interviewer: So what was your development, looking back now what was your development level, or skills?#
Nacin: Level? They were good, they weren't great. They, it's weird because, by the time I started contributing, and then really the first 2 months of contributing, I learned a tonne. So I had, I been developing for you know, a decade at that point in some regard. I had done, you know a lot of Microsoft technologies, working on that stack like ASP.NET.#
Interviewer: What were you doing that for?#
Nacin: Back in high school I started learning databases, and I did a lot of programming using Microsoft Access, and Visual Basic. And then the natural extension of that for web at the time would be VisualBasic.NET, ASP.NET.#
Interviewer: So when you started doing the college newspaper stuff you weren't like, completely a non-programmer.#
Nacin: I wasn't a non-programmer, I could pro-, I could program, I actually, I, this is ra-, I interned at the National Archives my freshman year. And I'd, I was not doing computer stuff, but I ended up rebuilding an entire database thing for them that handles all their box labelling, and they still use it for whatever reason. But you know, I can definitely build so-, and it's actually really funny because that was a Microsoft Access, that was a Microsoft Access database I, that's what they were using and I was like oh well I know this and this sucks, let me redo it. But I just, I, it was so clunky and I just rebuilt it to like this nice streamlined user interface. And I had always enjoyed doing that, and I mean when I was, you know, in my teens doing forms on Microsoft Access, because that was the thing, it would always, I would build like these fairly awesome UIs, that were like, actually looked good, and not suck. And be functional. You know, be devoid of options and things like that.#
Interviewer: So why didn't you think then since you'd been doing that stuff so maybe Computer Science would be good for you?#
Nacin: So when I was in maybe 10th grade, I started doing a lot of research. I started, I started really getting into academic research. And I spent probably 2 years working on a project. And there, there's this thing called National History Day in the United States and I worked for about 2 years on this, on this project that ended up going well beyond that initial, National History Day, and I wrote a tonne of papers and it was, I was studying this particular international incident, and I was writing things up and I was like participating, this is kind of interesting, I was participating on, on like the online forums and helping them with the site and I was, I was, you know I was actually fairly impartial on it I was just more like trying to figure out like what had happened and trying to study more of it and things like that and, so, once that was over I, I wanted to go to DC. I wanted to study, I really wanted to study Political Science, or International Affairs or something like that. And then when I got to DC, as it happens with a lot of people who go to GW they realise after a month that they didn't want that. I don't know if I did or not, or if I just never really focused on it. I was a really terrible college student. Great high school student, terrible college student. Because it was too boring for me, like it was too easy in most cases. And, but I mean I had done a lot of other online stuff, there's, there's actually a really interesting site, it still exists, it's called Experts Exchange, in many ways it was a precursor to Stack Overflow and I was actually a moderator on that site, from when I was 14 or so to maybe 17, 18. So they had 3 million members, 4 million members, maybe, about 10 moderators to handle everything, and I ended up going out there and speaking at their conference, when I was, oh that's how I got involved in WordPress. That's an angle I never thought about. So I, there I did mostly ma-, like, when I was doing Expert stuff I was doing like Microsoft Access and things like that, and then I jumped back in this, that summer that I really started getting involved in the project. And so I jumped back in in like June because I was like I've got nothing to do this summer, I'll do that. And so I jumped back in, I started doing moderating and Expert, and Expert stuff again, but then I realised that I could answer questions in like the WordPress forum as well. Because I started to know some of them. And like the CSS forum and all this other stuff. Still never answered any like PHP questions or anything like that, but I started getting involved. And they actually asked do you want to come out and speak at our, at our, we're going to hold a conference in like August, do you want to come out and speak. And so I went out there and there was like, they brought together like 40 community members from around the world, and I actually spoke about dealing with poisonous people in a community.#
Interviewer: Okay. Well I have a feeling we'll get to that.#
Nacin: But the point, the point there is that, it's interesting because I'd, I had been in that online community and I'd been in another online community and, in, in both cases in particular a lot of it was just like dealing with people. And dealing with not support, but to some extent support but also just dealing with how do we like mentor and keep people around and keep things going. So like a lot of, it's really kind of interesting, I got a lot of the experience from there. But so, and then so I ended up kind of not really getting back into WordPress through that, but it, I think it kind of helped me along into thinking that maybe I should do this as a developer thing. But yeah it was, really it was on the back of my mind as a hobby until you know, the end of my sophomore year in college.#
Interviewer: So are your first contributions support forum?#
Nacin: No.#
Interviewer: What were your first contributions?#
Nacin: I don't think I commented in support forums at all until after I like had commit access. I came in in a very odd way. I came in through the mailing list which I guess would be like equivalent of the support forums for the other side of things.#
Interviewer: Were you answering WordPress questions on Stack Exchange, not Stack Exchange, Experts Exchange?#
Nacin: Maybe a few. Not much. It was fairly new there as well for like their little topics, but...#
Interviewer: What was your first contribution?#
Nacin: My first contribution was, so finally I'd spent about a month and a half reading everything on Trac and 2 months reading every commit and everything else, and finally I saw a ticket float by for, there's, in wp-settings in the main workforce file for loading up WordPress there's a check where it checks to see a constant called WP_CACHE and then if it's set, then it will include this advanced-cache.php file and this is used by all sorts of cache and plugins like wp, W3, W3 Total Cache, WP Super cache and whatnot. And the person had said that if the constant is defined as false, it shouldn't include the file. And I was like, that makes sense to me. So I wrote the 12 character patch to also check that the constant was truthy. And I actually did it a few times because I'm pretty sure I went through and first, like did like, WP_CACHE == true, which the == true isn't necessary in that case, and it ended up going in, and 3 days later Ryan Boren committed it . And then I was like oh this is, this is fun. My name is in there. I know for a fact I sent it to Ben, like I forwarded the email to, to Ben immediately and I was like hey look at this. In fact I probably have that email being like hehe, smiley face.#
Interviewer: So he did it, he was contributing before you?#
Nacin: No he, he actually didn't contribute, he was just, he was, he had gotten me involved in like WordPress originally, and, and actually by this point, by that point he was already in law school. So he was like, this was not [inaudible]. He obviously loves writing code, I mean he works at GitHub now. That's his, he loves that part. But he didn't, he never, he didn't contribute right away. I eventually got him involved maybe 6 months later or something like that, but this was totally just me randomly doing things, and I started just, once I did that one patch and it got accepted, it was like floodgates opened and I just started contributing all over the place. Mostly small stuff but then it ended up getting to the point where I realised hey I could do a little bit bigger, and then I ended up doing, like I did some stuff toward the end of 2.9 with like Trash and other features that had come in then, and then it wasn't really until 3 0 that I really hit, hit my stride. But I, I ended up doing about 100 contributions that were accepted, so 100 props in the span of about 90 days before getting commit access.#
Interviewer: Was there anyone who particularly helped you?#
Nacin: Anything who particularly helped?#
Interviewer: Any, any person who was particularly sort of supportive or mentored you?#
Nacin: Yeah, Dion.#
Interviewer: Dion.#
Nacin: Dion got me, so basically what happened was that I spent about a month just doing this. And it was, I was, it was one of the only things I was working on I guess really, like I was just, it was like college and then this. And then the newspaper as well. But the newspaper, I didn't put nearly as much time into it as I had in the past, because I was working on the other things. And about a month later I sent Dion a private message and I'm just like, am I doing this right? And he didn't have commit access either at the time. I was like am I doing this right, and he said yeah yeah yeah. And so we, we started chatting back and forth and those, he might have those transcripts, mine are long gone unfortunately, I was using like Web Chat or something like that. And, I started chatting back and forth with him a lot about just like different contributions, and you know, how does this community work, because I really didn't know. I'd gotten a pretty good idea at this point after following along and whatnot. He, I think he just more or less confirmed my, my suspicions and thoughts on a lot of things.#
Interviewer: What were your impressions of the community then?#
Nacin: I don't know. That's a good question. I mean it definitely, it seemed very big. It was obvious that there were a lot of people who were working on the Core project, for sure. And I started getting an idea, you start to see like their personalities come out, like in messages and writing and things like that, and I had gotten an idea like okay, so there's Ryan, Andrew, Westi, and Mark. Like that's, I was like okay I understand those four. And then I was like, there was this guy named Caesar's Grunt, who did most of the Trash stuff in 2 9, and I got familiar with him, and then there was viper007bond who had done all of the oEmbed stuff in 2 9 and I was like alright starting to pe-, like piece together the different people involved. I don't know what kind of impression I had, I thought it was, I thought it was a pretty well oiled machine that was actually pretty fun to be involved in. And then something happened that really changed a lot, was that Dion ended up getting commit access at the start of the 3.0 cycle. And he just so happened to have been the person I reached out to and pinged. Which I think opened up the doors even more, because then there was like, oh great, I have someone to review my patches, or at least that he'll see them fly by and whatnot. I don't even know how much of my stuff he committed over the first you know few months or whatever. But it was like perfect timing, and then it just kind of opened up. I mean there were a few other contributors around at that time like Denis de Bernardy, Hans Grendel, and the two of them, it was like the two of them and then like Dion and I, who were coming at the project from very different perspectives, very different angles. Dion himself was about my age, so you know he was working at a print shop in the middle of nowhere in Australia, you know he was actually working on, he ran a newspaper site which was one of the ways that we kind of like connected originally. And, but then when I got commit, I think Denny realised that he was not going to get commit.#
Interviewer: Denis...#
Nacin: Denis de Bernardy. Denis, as you might have seen.#
Interviewer: Don't think I know him.#
Nacin: He actually stopped contributing for a while and he just recently came back, I think he's working on a new product, or a new project, so, so he's like, he's contributing a number of things but they're all kind of in an area, and you can kind of see where someone is at. Like it's funny, Ryan McCue filed two bug reports yesterday and based on the bug reports I know what he's working on, like I have an idea on where he's venturing off to, so. So like, Dennis just ended up kind of dropping off, and I think a lot of it were like, he's, he's not, he's by no means poisonous, but he's very self, he's someone who is, like he's very, a lot of his bug reports and contributions focused on his work for his company. Which is not a bad thing at all. In fact there are a lot of people who do that. But no I think it was kind of interesting to see, to see the different dynamics and starting to pick up on that.#
Interviewer: Yeah. The, when did you get commit, was it after 3.0?#
Nacin: No it was during.#
Interviewer: During 3.0.#
Nacin: So during, this is funny, like I mean, I, my, I had a biology lab scheduled for exactly the same time as the dev chat. So I was following, I was following along the dev chat while doing dissections and stuff. On my phone. Like secretly, like I'm scrolling through.#
Interviewer: Nice. What were you dissecting?#
Nacin: Oh there was probably a frog in there and things like that. It was pretty standard, I had to take a biology course for my, my anthropology stuff. So, no it was, it was, it was actually really interesting just following along with the dev chats, because they're, you start to see a little more personality come out with a lot of them. And then also, I ended up volunteering for a lot of Multisite stuff. Because it was a tonne of code that was all coming in, and I felt it could be better and it was also s-, it was an opportunity to clean up, it was an opportunity, some grunt work, like this entire file is all in English and it needs to be internationalised. Or, this bootstrap is terrible, how can we make it better. And we ended up just clearing out all the crap, and then we ended up actually just rewriting it in 3 9. But-#
Interviewer: Yeah what was Multi User like then?#
Nacin: Terrible. No question, I mean it was, so I saw it originally from the angle of a user, I tried installing it back in, probably January 2008. And it was, it was rough, very rough, and it was very obvious right away that it was not a install multiple blogs piece of software. It was more of a, we're going to connect these things together but it's, in reality it's its own thing. You know I think they had said, they said it shared like 99% of code or 98% of code with WordPress. In reality it was, I mean that extra 1% was all the nasty. Like it was so weird and the UI was really bad and it had these really terrible ways of managing settings that really actually still exists. The, Yeah, It was, I mean it was interesting, it was just not, the merge was especially frightening. Because it was-#
Interviewer: The merge between WordPress-#
Nacin: The merge, the two of them, because, and they brought in Ron Rennick to do, to actually like do the merge and commit over the files and things like that, but the stuff that he was dropping in was just so terrifying. And it's not his fault because he's basically copying and pasting and figuring out like how can I best diff these files and bring them together. But I mean there's still stuff in, in Core, like until, with all respect to Ron, until you can run an SVN blame on all the files and not get Ron's name back , we have a long way to go.#
Interviewer: Okay.#
Nacin: Like he's, there's still a lot of lines that he is the last person to touch. And it's, yeah I mean it's scar-, I remember like, I remember rewriting this bootstrap which we just did again in 3 9, properly this time. Then I remember looking at these two sides of a giant 'if' conditional, and 40, 50 lines, and I started removing pieces like well that's duplicated and that's up here, and that's here, and then suddenly I realised that the entire thing was redundant and could just go away. And it was like, and Ryan, and Boren was just, okay, sounds good. He just got, he got sick and tired of shepherding in all of my patches, was, was exactly what he told me. He, he asked like do you want commit, and I was like o-, okay... sure. He was like I'm just tired of push, pushing in all your patches. And he got to the point where, and this is what happens with a lot of con-, with a lot of contributors, that he got to the point where there's nothing to correct in the patches, there's no feedback to be given. And a lot of the times they're running with something repeatedly, you know, I didn't work too much on menus but I ended up doing a lot of work on Multisite, a lot of work on Post Types, and then I ended up, once I got commit I ended up doing a lot of the menu stuff as well. So that was a fun release, and just due to timing, Jaquith was having a kid, Westi was, was off doing things, it ended up, and Ozz was sick, it ended up being me, Ryan, Dion.#
Interviewer: So that was 3.0.#
Nacin: That was 3 0.#
Interviewer: How does the, how did the merge work.#
Nacin: The merge, Ron, Ron just started committing files and things. And then once they landed we just started cleaning it up. And there's actually, if you look at, there's a ticket graph on Trac and there's a particular spike on one day, where it, we po-, I think we opened like 150 tickets in one day and Denis probably opened 75 of them and it was, because every, noth-, it was, nothing was up to Core style, nothing was up to Core standard, it was, what it did was cool, how it did it was scary.#
Interviewer: And why was it necessary to merge them?#
Nacin: I don't know. Well how about this. It, it absolutely should have happened. I don't know exactly what caused it, I know that it was announced at WordCamp San Francisco that previous year. I hadn't been involved yet. If I'd, and here's the weird thing, like if I had got involved 2 weeks earlier than I did, I probably would've gone up to WordCamp New York City, probably would've met Daryl Koopersmith and Mark Jaquith then, and I probably would've reveal, would've revealed myself to be a fairly novice person. And never would've been, been trusted to keep going with things.#
Interviewer: Everyone starts as a novice.#
Nacin: Absolutely. But it's, it's intere-, like I didn't meet anyone in person until I was already a committer for 3 months and run like, helped run 3.0 and then went to work in San Francisco. And there was a lot of impostor syndrome there too but it was, it was, I think it was really interesting I think if I had gotten involved then, they would have been like he's a promising young guy. It's interesting how that works with like meeting people and things like that, like there are some people that we've, that we've met and that definitely helped us understand them a little better. And that helps a lot. But there are also some times where you might have met someone and you don't, if you hadn't met them, how would you have thought about their contribution, which is kind of interesting. So Multisite. So Matt announced onstage at WordCamp San Francisco that they were going to merge it. And no-one knew it was coming. Mark Jaquith was bl-, he had, he was like, oh are we. It was a really good idea, I, I honestly don't know what the catalysts are, you'd have to ask him, I imagine the thought was that it's silly to continue to maintain these separate projects. Which it was. They should've, they should've been one piece of software. It was a fork that applied extra logic all over the place, it was a pain to maintain, Donncha couldn't necessarily keep up with all the Core changes which were getting even more numerous. So like after every version it would be like a week or two and then he would merge in all the changes and then he would ship a release.#
Interviewer: Would it have been cleaner just to make a new WordPress Multisite rather than merging in MU?#
Nacin: It had a lot of functionality, you know, in hindsight, so we wanted it to be a clean upgrade path. In hindsight I'm not sure if that was the best thing, but I don't, it worked, it worked. It was a, and we pulled out a tonne of code too, like there were some functions that came in that we were like we don't want that, we just ripped it out. Or this is just stupid, and we axed the whole feature. Like we just removed global terms, or, I guess it's still kind of in there hidden, but there were a lot of things that we were just like this is stupid, gone. But for the most part like it was a fairly clean upgrade path which is I think what they wanted, they didn't want, they didn't want people languishing on what could then be forked, and then be run. There were a lot of interesting discussions around that time, like what to call things.#
Interviewer: Like?#
Nacin: I actually read this blogpost on like, what is a blog versus a site versus a network. In Multisite, in MU, the whole thing was a site, and then individual sites were blogs. And then in 3.0 not only did we, were we bringing in this which included function names and everything else, but then also a big push by Jen was to rename, stop calling it a blog in the, in, on, in strings and whatnot, and use site everywhere. So WordPress has like get_bloginfo that corresponds to the site, get_site_option that corresponds to the network. Get_blog_option that corresponds to the site, but then there's also some site stuff that corresponds now to the site.#
Interviewer: So that's confusing.#
Nacin: It's a, it's a, it's still a mess but it's getting better. But you need to really understand Core code in many ways to be able to understand that like oh site id means this, in this context. But blog me-, or site means that in the other context. So, but no. The way, I mean the way it worked is that I, Ron was just diffing, he was comparing the two files, and then bringing everything over and committing it. Basically WordPress itself beca-, like MU beca-, in a way MU became the canonical version of WordPress. If you think about it. Like in a way they took all of MU code and merged it into WordPress code, but they just as easily could've just like switched the repositories. You know. The, the exception of course is that pretty much everything was stuck under an is Multisite flag. But we, we were having these conversations in IRC and I love these old days of IRC, that's how, that's one of the great ways of getting involved in a project and following along all the conversations. Conversations about terminology, would we call it a network, like, are they called a super admin or are they called something else, we can't really call it a site admin because it's different and things like that, and you know, how can we do this the right way and you know calling it Multisite and networks kind of just evolved naturally, we were like this is, this sounds like a network, and then I think we just started referring to it as Multisite in the code and that's kind of the name that it took on. But even now like, we think of like the feature itself as Multisite, and then you have a network of sites or, or you might have multiple networks of sites or something like that. But yeah that was, that was, that was definitely, it was, it couldn't have been a more interesting time to get involved because that was a significant amount of code churn, and there was a lot of opportunities to contribute hack I think.#
Interviewer: Was menus that release as well?#
Nacin: Yeah.#
Interviewer: And hack, can you tell me about that?#
Nacin: I didn't follow along, I mean I was following along but I didn't really have anything to contribute for the first month solid. And then by the end of Jan-, so it was on January 1 on release, like it was the start of the year kind of thing, and by, towards the end of January the menu feature which we had talked about still hadn't gone anywhere. There were still discussions on how to build it, and what to build, and there were some prototypes and things like that but it didn't, nothing really had happened yet. And at that point what ended up happening is that there were some attempts and nothing really was track-, gained traction. And so, and there were some thoughts like is it a widget, and do we store it this way, and what's the data model, and things like that . And then WooThemes released this new feature for their framework whatever it might have been, written by Jeffikus. And so that got pulled, they contributed that back. I think we reached out to them, I think Jen might have reached out and said like hey, were you guys interested in contributing this back. So they did, that was end of January and then it was the second time that we've now merged in code that was like plugin quality but not Core quality. It was good, but it wasn't, it wasn't going to handle all the edge cases, there were a lot of other things that needed to happen, it used its own tables which we needed to convert over, we determined right away that we use Post Types and taxonomies, which were kind of new. I mean Post Types were pretty much new in 3.0, taxonomies had been around for a bit but hadn't really been leveraged in this way. That's like an internal data store. In Core at least. And, so we just started hacking away at that too. It's really funny actually, after the end of, by the end of 3.0, there were 11 lines of code that were still there from the original commit from WooThemes. And they were, it was white space and like an ending curly bracket and the opening PHP [inaudible]. It wasn't a bad thing, and I actually wrote a, I wrote a blog post on this early on that just said, like that was talking about the contribution and saying that yes the whole thing got rewritten, and yes it still made a big impact and all contributions get rewritten.#
Interviewer: Yep. Yeah I heard it was a difficult process.#
Nacin: It was a terrible pro-, it was a mess. It was the, it's funny because like, it was like the, in some ways a precursor to a feature plugin. Some people didn't think the feature belonged in Core. Which I think was part of it. Managing a menu at that time though was really painful. It made it better in a lot of good ways. But so what happened is that originally, so originally Ryan kind of started with it, and then Ron I think was the person who ended up committing it. And then we all hacked on it for a bit, and then Ptah Dunbar had just kind of come onto the scene, similar to the way I did, just like, just suddenly just started coding up a storm, and he really started applying a lot of stuff to that code, and to, mainly to the interface. And then [inaudible] Austin ended up coming in and dealing, writing most of the API that we can see now today. And then both of them for whatever reason, they had other commitments and we had to do more things, and at which point a, a guy named Daryl Koopersmith was stuck in Ireland as a result of a volcano.#
Interviewer: Oh yep, I remember that.#
Nacin: And, and I was at WordCamp San Francisco at the time, and so this is early May, the release was supposed to be out by then, it ended up shipping June 17th, so about a month and a half later. And he ended up doing most of the final UI work, so there were three different major contributors to this, and he did a lot of the final pushes to make it not completely suck. But it was, in a way it was good, we needed the extra time for Multisite to kind of like gel, just because there was a lot of churn there, and a lot of stuff. But I, I mean you can look at the ticket counts that got closed, we closed like 1200 tickets in that release in the span of 5 and a half months.#
Interviewer: Were WooThemes still involved with the process?#
Nacin: Yeah initially, for sure. Jeffikus contributed quite a bit to it. But eventually it became, it got complet-, it got pulled into Core and it went in a different direction in many ways, we changed some things that, like what they built and what we have are not at all the same. I mean, but it, the, the important thing, the most important part about it is that we had no base to build off of. Didn't have wireframes, didn't have prototype, didn't have a sketch, didn't have anything. And so this kind of just gave us something to tear, if you asked us to build Multisite from scratch I wouldn't know where to start, right. But the fact that we had this codebase, as dilapidated and old as it was, and [inaudible] as it was, it still was a great basis to then throw in and improve. And we did the exact same thing with menus too.#
Interviewer: Did you consider other plugins to throw in, or like?#
Nacin: I don't think there was anything that did what we wanted. No-one had really done this and that was part of the problem is that sometimes no-one's done it is a good reason to do it and other times no-one's done it means there's a good reason not to do it, like no-one needs it then. Or no-one's done it well, and that can also go two ways, it's no-one's done it well, so therefore Core should do it because we could do it well. Or no-one's done it well which means what makes you think we would be able to do it well. And I've, we've dealt with a lot of features in both directions, I think. Where we've said, you know, like if no plugin can do this, why should we. Or no plugin can do this, well we should. It kind of goes both ways. I honestly again it was kind of just like right time thing. Jeffikus definitely contributed for the first few weeks to get a lot of that stuff in, he did exactly what he needed to do, he was great, but then it, the whole thing took on a life of its own, because it, it, the schema changed, there was an API built on top of it, the, we, I mean it, we got until maybe like 3 weeks before release before we realised that there was no good theme API for it. . Like we realised that the way, the act of defining a theme location. Like so you, a theme, a m-, a theme wanted to have a menu in this spot, there was no way for a user to say I want it to be this menu. And this was like probably 2 or 3 weeks before release that we discovered all this. At which point I kind of dreamed up the theme locations idea and then coded it, and then we shipped it. And so I take full responsibility for that. But that was like the, that was like the final, that was like installing the wheel in the ca-, in the ship house on the Titanic, like it was just the one little piece of the rest of this monstrosity that was way more code than it needed to be and everything else, but yeah.#
Interviewer: Was there anything else big in that release?#
Nacin: Big, 2010. First of [inaudible]. Post Types as a UI. Taxonomies as a UI. There was a lot shipped in that release.#
Interviewer: What was the, so the new default theme. How did people feel about that? After having Kubrick for so long?#
Nacin: I mean I think everyone loved it, I think the cool thing about it was that, so Matt Thomas was very heavily involved. And now it's, it's Lance, and it's really Lance and now Konstantin Obenland. But the, the original person was, was Matt Thomas, and the, the theme was based on Kirby by Ian Stewart, but Ian didn't actually, I can't remember seeing his name too much in 3 0. He didn't really, he contributed a lot in to 2011, he kind of tag teamed that with Lance, but I don't remember seeing, like it was mostly Matt Thomas doing this. And I think the really cool thing is that we were fin-, we were like the Core team, the Core developers, sorry the Core contributors to the whole, hadn't done any theme development in a while, and most of them don't, right. They mostly come from more of a plugin or architecture background. So we got the chance for the first time to be theme developers. Which then enabled all sorts of new things, so if you think about it, menus wasn't the only thing in that release, we also ge-, genericized custom headers and custom backgrounds.#
Interviewer: Yeah, yeah I remember.#
Nacin: And, and that, and then we applied it to, to that theme and... I think we did, those are the big ones that we, that we kind of genericized and made new. And I think at the same time we added like the comment form function and kind of cleaned up all that mess and things, like we did a number of things where, we were basically would look through the theme and be like that shouldn't be in a theme and then go code it up somewhere [inaudible].#
Interviewer: What other legacy things are there in the code that make you like, crazy? Like you were talking about, or that are confusing to people like the is blog, is site?#
Nacin: That's a lot, that's painful for sure. I'm trying, I'm trying to think. There's a lot of, most of WordPress is legacy. A lot of it's legacy. There were a lot of times that I tracked out something weird, and it goes back to you know, b2. Our formative stuff, all of our foundational stuff hasn't really changed in 8 or 9 years, like WP_Query, it's changed a lot but the idea of parsing using re-write rules into query variables, to then dictate how a query will happen, which then dictates the template, we're talking 2005, 2004. There's somme old stuff in WordPress for sure, there's a lot of legacy. The, the, we, we kind of universally agree that the worst code in WordPress is the admin menu code, because it [inaudible] so much... The, the admin menu code is actually tied into rendering like plugin pages that they register, is tied into like capability checks for those pages, it's like... The worst problem is that changing it could open up security holes. So no, and no-one just goes near it, it's the-. And the thing too is that it, it's gotten so much caked on over the years, because the menu in 2 3 was incredibly [inaudible] menu in 2 5, which was incredibly different from the menu in 2 7, with Crazyhorse. So, and then it ended up kind of developing these, it used to be that you'd have a menu and sub menus and the sub menus would only be rendered on the pages that you're on so like you'd have to go to the manage area and see all that stuff. And that was weird too, updating from 2 1, to 2 3, to 2 5, to like 2 7, so much UI change. Every version of WordPress looked new. And looked different. You were like why did it ch-, why is it so orange or whatever it might be. That would be 2 5. But like so then that particular code just has needed to evolve by force to do all these other things. But it otherwise isn't really touched.#
Interviewer: Yeah so I think Boren said to me you could probably still make that horizontal menu in WordPress.#
Nacin: Could still?#
Interviewer: Yeah. Could still.#
Nacin: Yeah. I believe it.#
Interviewer: What about taxonomies?#
Nacin: I mean that was far before my time, when it started. I know you've read all the old stuff and we were chatting about this the other day. The, the biggest issue I think is that, I think there are two problems. One, , it was not necessarily over-engineered or over-architectured but there was one particular assumption that was made that I've never seen pan out. And that was the idea of a shared term. And this is another thing that's very confusing, there's global terms, which is the idea of like the Apple tag on one site is synched up with the Apple tag on another site and then hypothetically you can then query for all posts on those tags or whatever it might be.#
Interviewer: For like global tag clouds.#
Nacin: Yeah.#
Interviewer: What about, what do you mean about shared terms?#
Nacin: Shared terms was this, I mean, this is the best way to describe it I guess, is you have a, there are these terms, and a term can be in one or more taxonomies, so you have the Apple term that can also be an Apple category. The problem of course, if it's Apple and Apple for apple the fruit, Apple the company. For whatever reason, and I honestly still don't know the reasoning behind shared terms, I don't know where it came from, I think a, I think that was actually one of the things that we kind of picked up from Drupal. Because Drupal's, Drupal's like nodes and at the time terms system was kind of studied as well. I've never seen a use case for wanting to have a shared term. But that's where most of the complication comes from. If that didn't exist, we would be one less table, we would be a lot less, lot less insane on how we managed it. And then the second piece was more implementation. Instead of using, so a, a term id could be one or more taxonomies. So in order to uniquely identify a term, you actually had to use not only the term id but also the taxonomy. The problem with that is the real term isn't the term itself it's the term taxonomy, it's that row in the term taxonomy table. That's the real one. But we pass around the term id instead of passing around the term taxonomy id. If we passed the term taxonomy id around everywhere, if we'd passed that id around everywhere, we would've been able to do things like combine the tables or fix a lot of this stuff later, without breaking the API. And instead all API [inaudible] have changed and things like that, so. Yeah that's, the cool thing is that it got some really cool improvements over the years, taxonomies in general, so they came in 2.3, the real API for them came in in 2.5, in 2.8 you could do things like register, you could do things like show UI for tags, tag like things, and then eventually we made it so if it was a hierarchical one, in 3.0 we added support for like hierarchical UI, and this was when we really brought in all the UI stuff. So, we used to have tonnes of duplicated code between like edit.php and like edit-tags.php, and then there was edit, oh sorry edit-pages, and then there was also edit tags, and edit categories, and edit link category, like all of these were , all duplicated. And Dion did most of that, and merging all of these different things together, down to like collapsing them into one idea of Post Types, or taxonomies. That really helped. And we have a long way to go still on that. Like I eventually want it to be, like with the one line of code the entire post, Post Types should just vanish. But too much of Core is still heavily dependent on that piece.#
Interviewer: Have you read any of the sort of early discussions about what people thought taxonomies should, what [inaudible] be?#
Nacin: Yeah.#
Interviewer: Were there any then that you read and you thought oh that's how we should've done it?#
Nacin: No.#
Interviewer: They were all like-#
Nacin: No, yeah. Maybe, there might've been one that I missed, that I didn't notice. I don't think that anyone proposed it. It, it was, not even that. In hindsight it looked so easy, right. The original idea was adding a column to the table. And that would've been an unmitigated disaster. In the first up it never would've been able to expand to ta-, to taxonomies, and secondly, trying to run an altered table every, every time you wanted to add something is just, the [inaudible] just bad. One of my favourite commit messages is Mark Jaquith removing tags from Core in 2.2, where it's, remove tags from Core, reverts and then lists about 50 changesets in a row, and in the middle of, of like this giant block of just numbers and brackets, is the words part of. Before one of the changesets. Like he actually took the time to say it reverts xxxyz blahblahblah part of this one, and then all of these as well. But like it needed to come out, for sure. Again I've read through the old, the old lists, I've studied them. It's funny because I can talk about, I can talk about a lot of these older things, some of them at least, as if I was there. To as good a recollection as the recollection that people, like Ryan Boren-#
Interviewer: Well, because they don't re-read them, they haven't re-read them in years.#
Nacin: Well yeah, but like so I can, I'm about on par with, what I know and what they remember is about even, which is very helpful.#
Interviewer: I thought it was interesting that Matt wanted just one to add to the term and taxonomy table.#
Nacin: Yeah.#
Interviewer: And then everybody else was like no no no, but they wanted two, and then they ended up with three.#
Nacin: I, I'm trying to think of, I believe it was Ryan who ended up proposing that particular piece. Again the reason why was this idea of like, terms can be in more than one taxonomy. I, I still don't know, I wish I knew where the idea came from, I tried reading the thread to figure it out.#
Interviewer: Well one of the things was the global tags thing.#
Nacin: But that wasn't, that had nothing to do with it.#
Interviewer: That's got nothing to do with the shared tags?#
Nacin: Had, it doesn't have, because on, unless, the only way it could have I guess, and this could be it , is that you'd want to associate someone using the tag of Apple on site and the category of Apple on another. That's the only way I can think of. And if that stupid .com thing that they don't even use anymore was the reason for what we have now, that's kind of funny.#
Interviewer: Well, Ryan said .com had a big influence on how it was structured. The taxonomies. Do you, do you think that's happened on other occasions?#
Nacin: Yeah. In both good and bad. I think it's definitely happened in very good ways a lot. The same time we've, we've, I, we've always been told not to let .com dictate what we're going to do. Because sometimes there are just things that won't scale at that level. Or that won't make sense at that level, or won't be used. I mean there's a lot of features in WordPress that obviously don't apply to .com. There's also a lot of other weird things like, one of the, one of the early pieces of advice I received was don't worry about how .com is going to handle this, they have people who are paid to do that. Which is good. Never thought about it as, honestly any time a bad idea has come from .com we thought it was a good idea at the time.#
Interviewer: I guess it's more in the very early days of .com, that probably had more of an influence when it was Matt and Ryan-#
Nacin: I think it's still, I think actually .com still has a big influence for sure.#
Interviewer: I mean in terms of, perhaps negative influences, like you guys can act as the gatekeepers in a way, which perhaps wasn't the case in the past.#
Nacin: Yeah, but I mean it took them 3 years to even think about merging MU, so.#
Interviewer: Yeah, that's true.#
Nacin: Four years from when .com started. So I wouldn't even, I wouldn't put too much into that, I think that they noticed things that scale and with users now. I mean I love, I love having WordPress.com around because they merge in the beta versions and things like that, so. And maybe it was perceived as negative, I've never perceived it seen as negative. I enjoyed seeing the things that they could build there and that may be contributed back, and more and more features are being built for Core. Like they're building with the intention of contributing it back to Core. Rather than sometimes, I hear about this thing, and like yeah we built this, this really cool thing in the customiser, and then it's, okay. Were you going to mention that you were doing it? Like Core would want it, and they're like, we didn't know if you wanted it, and like, well, then ask. Because there's a bug report that's been open since 2 years that specifically describes this, and in fact explains why the thing you just did here will never work and it has to be this way instead, or something like that. But for the most part like it, it works pretty well, and it's a lot of, obviously there's a lot of cross-pollination. I, I don't think it's ever been, I don't think there's ever been a point where .com, or like, something that's learned through WordPress.com has influenced the project in a way that was at the time thought to be negative. In hindsight some of it's bad, like taxonomies is a great example of like s-, and I don't even think the .com dictated it, I really don't. I think it was just one of the many use cases that were thought about. And unfortunately it got just barely over-engineered.#
Interviewer: Have you got other examples of bad and good ones?#
Nacin: That's definitely, I think that's definitely the big one. There's a lot of other things that came from that area, I mean widgets came, came through that path. I don't know. Trying to think of what really came over. The toolbar. The toolbar came over. And that was something that they built, and then we were like okay, we should probably, eventu-, eventually it made sense for Core to have it, but yeah I'm trying to think of what else. A lot of little things of course. Yeah I'd have to get back to you.#
Interviewer: And is there other things on a par with taxonomies that cause you problems now?#
[interrupted]#
Interviewer: Okay. Where were we, taxonomies?#
Nacin: Taxonomies. The, I don't know how much the taxonomies schema is, I'm trying to remember what you called it . It's a crutch. Or it's not a crutch, it's, it's a frustration, and it holds us back, but it doesn't really prevent us doing anything right now. Like it, it works, it's not as if it doesn't work, there's a lot of things in WordPress that that, don't work#
Interviewer: What doesn't work?#
Nacin: Oh just like there are just things that, that could be a lot better, that are bad. And I don't think the taxonomy schema is bad, I think that it could be better. And a lot of the problem too is that we're starting to think that we're starting to think about things like metadata for terms, and then also the idea of relationships between posts. And in both cases the schema needs to be updated, and in both cases we need the taxonomy schema to change first. One of the reasons is that idea association. The ma-, the only id that ever gets passed around is insufficient for our metadata API because it can refer to more than one taxonomy. And a term should be, the meta should be specific to the term in the taxonomy, not to the term itself. Because it doesn't make sense to have that, that super term. So yeah, and a lot of this is just because people have been building more and more on top of WordPress that we just didn't keep up with. I mean people were using it as a CMS before we called it that, you know, people are using post relationships and everything else before Core even gets in that direction, so.#
Interviewer: So how, after 3.0, what was your involvement in the community, did you just continue to-#
Nacin: Yeah I had, so I had, I had commit access, 3 0 was released, and for whatever reason there was this idea that we would do, a few month-, I think it was just, it was such a burnout that we decided to take a few months off. So summertime, a lot of stuff doesn't normally get done anyway, [inaudible] code, and the thought was that we'll have this like 3 .org cycle. And this was for the first time a lot of us were getting a look under the lid on .org, and it was a mess. And we ended up, it was, we turned it in to, what, what did run WordPress we turned into a proper Multisite instance and we, we kind of modernised it a bit and we made it run trunk because we were like hey, why not, and all these other little tweaks, and there were a bunch of other teams working on some other things and some of them [inaudible] and some of them didn't, were a precursor, I mean, one of the projects assessors is now the developer reference. But that was originally, there was an API reference team then. And it, it, we ended up turning, ended up generating a parser that did, that was like Alpha. But we didn't go, didn't go beyond that. It took a while for that to get, kind of be like, picked up again, and then probably redone 3 or 4 times before it got to where it is now.#
Interviewer: Why was that?#
Nacin: Just, the original one didn't deal with, deal with, didn't deal with hooks or anything like that and used a different technique than we would use now, things like that. Used an old version of phpDocumentor, there were all sorts of different reasons why. This was right around, this was also right around that like Otto was now full time on .org and whatnot, but part of the problem with it is we wanted to build all these cool features for, for plugins, for everything else, and, little of it panned out because of how much of a mess .org was. It was terrible. And so, yeah that was kind of interesting. And then 3 1 started, that September or so, and one of the things that came in was, was AJAX list tables, which. That was, that whole thing was a disaster. That was 3.1.#
Interviewer: So what was that?#
Nacin: That was the idea that every, so that brought in the list table concept into Core, which is a fairly low level API you deal with like, listing the plugin screen or listing the pages screen, or the post screen. And it, it was a, it worked really well but once we, once we started using it we started accounting for all the edge cases, slowly but surely we reverted piece by piece by piece until eventually the feature which was, you click it spins it loads the page again, got pulled entirely. There were too many weird edge case bugs with, what happens when you're on page 2 and you apply a bulk action and then where does it send you and it sends you off to this random place, and it doesn't make any sense, and just the user experience was, wasn't there. It wasn't necessarily much worse than it was already in Core but it was just, it got to the point where 3.1 was so overdue. Like we were supposed to release it in December and by January the Core team was meeting and there was like 15 of us and by the, like, the last night we were there a bunch of us stayed up really late to be like, alright, so what are we doing in 3.1. And how are we solving this. And then we eventually just decided we needed to yank a lot of it. And so we did and then it still couldn't, so we did and then it was one week after another there was another major problem. This brought in like the taxonomy queries, and the whole, it wasn't perform-, it didn't scale at first, and then you know so that like segfaulted some servers on .com and things like that, so. And then it being this, this issue where, that there's nothing good that happened in that release. And we learned a lot from it, I think. But it shipped February 23rd, 2011, so 2 full months after, easily 2 months after we wanted to release it.#
Interviewer: How often do you have to yank things out?#
Nacin: More than you might think. We did it in 3 9. I think the important thing is to just be decisive about it. And some of the times we're not. Which is also okay, I mean like the Post Format UI, we knew we were yanking that out, we like decided that's the only recourse for it. A few weeks before we did. But we wanted to, it's almost like you want to let it sit there a little bit longer, just to see like, this is our prime opportunity to get feedback so let's let people, like, say all the things that are wrong about it, and collect it. Yeah I mean, in, in 3 9 there was one particular feature that got out of hand. It wasn't even a feature, it was just, it was an API improvement. We had, we, we'd do these queries for adjacent posts, like find me the next post so we can link to it. And it's all raw queries, and we wanted to, Erick Hitter wanted to make it use WP_Query. And we did it, and then we found this edge case, and then we found this thing that it broke backwards compatibility wise, and then we found this other edge case, and then this other one, and finally it got to the point where it was like the straw that, that, the camels back is broken, we can't keep spending time on this, it clearly was way more than we thought it was that needs to come out, so we yanked it out.#
Interviewer: So how do approach edge cases?#
Nacin: It's tough, because if it's in a plugin it's, I don't really care as much. It's not, it's not going to affect as many users, the users are not, aren't going to deal with it, but the moment something needs to be Core material it's not just code quality, or user experience quality or anything like that but there's also this major issue of does it have these very obvious situations where the u-, where like things will break or the user will be very confused. We have them in very limited places end up on, on Core but we don't try and add them. A great example would be, where we did add one, is that you could insert a, you could insert an image into a post, but the moment it gets inserted it severs the link between it, itself and the attachment. What you don't want is to crop and image and then for it to suddenly get cropped in the other post that it was also inserted into. Little things like that, that's, if it did something really bad like deleting the im-, like it's, maybe it's acceptable for an image adding plugin but for Core we need to think about that a little more. So we need to think about like the little breakage, or the well if a plugin was, or if, you know, we will see this random thing where, well if someone was using the Pre Get Posts hook like this, then this whole thing comes crashing on your head. If it's in a plugin, chances are no-one's going to have those two situations on the same site. If it's in Core, they will. So, yeah, it's , a lot of it isn't even backwards compatibility stuff, it's just like if you do this thing in this order, it falls on its head and that's, that can be a problem. So some of the edge cases sometimes are like the, the fringes of scaling. If you have at least 10,000 users then this thing does not make any sense, or whatever it might be. And we've had, we've made some strides in that area too recently, which has been pretty cool, but, Multisite for example, once you hit 10,000 users or 10,000 sites it starts to change behaviour. Deliberately says I am too large for me to do this thing. I'm not doing it.#
Interviewer: Oh that's good.#
Nacin: So and we, and a lot of that was because we did, we used Multisite on WordPress.org. And we realised oh, this isn't going to work.#
Interviewer: Yep. What about developing media in 3.5, that seemed to be a big one for you?#
Nacin: Yeah that was huge. The media release was, 2.9 was supposed to be the media release. And we brought it, I mean that was when image editing came in. Oh, another great edge case is trash. At-, you can't trash an attachment. And the reason why is because the file will still exist. Now if you trash an attachment and there's an image referenced in a post and suddenly the image disappears, well that's an edge case. That needs to be solved. Right so you need to actually know where attachments get used. First problem. Second problem would be, if you trash an attachment you would think it'd be private, but the URL would still be there. That's a problem, that's an edge case. So trash is disabled for attachments for this purpose, for this reason. Again like it specifically has to do with the fact that there are both information disclosure issues and also just I did something here and unexpectedly broke this issue. So that's ano-, that's another one of those things that we like came up with. Towards the end, we're oh crap, we have this other aspect that we didn't even think about that we really need to do.#
Interviewer: How did you delete attachments?#
Nacin: I'm sorry?#
Interviewer: How did you delete attachments then?#
Nacin: If you delete an attachment the, the whole image does get wiped. But tr-, the whole concept of trash was to have an undo state. So it should be temporarily deleted and then be able to come back. And there are ways to do it like we could rename all the files to something like with a hash and then rename it back when we're done or something like that, but in the end it was just, like it's just, that's the edge case that like we can't have in Core. Media in 3 5. So every release was going to be the media release, 3 0 was going to be the media release and it became the Multisite release instead, and then 3 1, since Andrew was sick for most of that year we were like well we can't do it because we don't have, we don't have someone to build any of this, it's like okay , and then after 3 1 was such a mess, 3 2 was short and concentrated and we actually released by, released it I think on July 4th. I think we were maybe a week off of our target. That was one of the releases that actually basically, for all intents and purposes hit the release target. We wanted it to be 4 months, it was actually 4 months long. And that was a much smaller simpler release. And then 3 3 we were like alright, we can kind of like take a good step in the right direction, let's try this again. And 3 3 was fine, it brought in a few features, nothing big, it did like drag and drop media uploads and things like that, it was a cool release, it was fine. And we were like alright so, we thought about that point we could just chip away at media piece by piece. And then the customiser was 3 4, there wasn't much media there at all. But one thing that did happen is that the Plupload, like all of our handlers for that, were based on the old SWFUpload handlers, and both of them was, were just terrible. Absolutely atrocious, so as part of the customiser Daryl rewrote, he wrote a new API for handling media uploads. So we had kind of over the course of at least 2 releases laid a bit of groundwork for new media, and then when, for 3 5 what ended up happening was that Daryl and I were going to lead the release and we were talking about like what should we do. And at first we were thinking, maybe we should do a bunch of, like let's just try and improve things, let's do a little, actually kind of what 3.9 ended up turning into. But maybe even like smaller scope, like let's just, what if, what if we added, you know, widgets and menus to customiser, or menus or whatever, like what if we did this little thing, what if we, you know, what if we just did like a grab bag. And eventually after, we had been saying like the next release is the media release for years, and it was a joke. And media, it's funny because like it came in in 2.5, and it was great, and then it was, and then it very quickly was not great. It was slow, and there was a lot of other things along those lines. So what was cool was that we had learned a lot, we had learned a lot when we did menus, we had learned a lot when we did like internal linking in 3 1. Like that box used to be an iframe that loaded up and it was too slow, so now it's instant. And that was one of the things that we did with media too it should be instant, it should just appear immediately. It shouldn't need to load this iframe, and then slowly clicking around and things like that, so. So Daryl, it was his idea, he was just like we should just do media. We should just do it. Fuck it, do a lot, let's, let's just do it. And, I was going to be the lead for the release and I was like oh god, can we? Like I don't, I don't want to go down in flames. Like can, can we-#
Interviewer: Was that the first one you led?#
Nacin: Yeah. Well, officially, right, because we, so we didn't, we didn't have the c-, the official concept before then. But for all intents and purposes Jen had br-, had run a lot of the releases previously. And Mark in particular had led 3.2. More or less, like it was very different than the way we call it now. Less intensive. But for, I mean I, I had been active in, at this point, 5 full major versions. And at this point like Mark was not, he, Mark was not full time on Core, Westi you know was not doing a tonne, so with Andrew not around either it was basically Boren and I, for, and then Daryl. For, for a long time. And so I had definitely, I had no problems with running it, I had run meetings and things like that, I didn't really have a problem with that. It was more of just a situation for, really the one time that I put my name on this, and we're going to go with media? Crap. It was just not, I'm glad we did but it was, it was a huge leap of faith. And so like alright, well let's wireframe it, so we started wireframing it and this was really the first time that we approached a feature from this really great angle, just, I mean I remember sitting at a, I remember sitting actually at a bar in DC with a bunch of friends, with Yuri Victor, who was at the time the user experience director at the Washington Post, flipping through wireframes and talking about them, and we probably had 60 or 70 different wireframes and we were, every single one of them we were like let's talk about this experience and things like that. What we ended up building didn't hold true to the wireframes at all, and it went through probably 3 or 4 major iterations once it was built, including 72 hours before the release. Yeah, that was bad. It ended up being great, but I think the big one for that release is that it's, what's the line, it's not what you did it's how you did it? In that, it's actually from a movie, All The President's Men, it's, I'm not upset with h-, with what you did, it's how you did it that sucked. And then this in particular was like it, it was a great release, but by no means do I think it was a, do I, do I think it went smoothly. Media was a huge bite to chew off, it's amazing that we did it. We needed more time.#
Interviewer: What were the problems?#
Nacin: It was just a tonne, it was just a tonne of work. Like we, we re-did it and th-, we re-did one of the most important workflows of WordPress. A 23, 22 year o-, a 23 year old and a 24 year old just tore up the carpets and re-did an entire thing from scratch. And there was a lot to consider, there was a lot to think about, there was a lot of feedback, and there was a lot of like this works, this doesn't, how can we do this. It, we, and we ended up cutting some features, there was a lot of stuff that got into 3.9 that was supposed to be 3, that was originally 3.5. So I'm really, I was really glad to be able to come back and do that again, but. And that, that was the one thing that I was definitely [inaudible], because I wasn't obviously the main, the lead developer of the feature, I was running the release and there were a lot of other things in the release as well. But one thing that I did do was I was very ruthless about we need to cut this, this can't be in here anymore like we need to just, this, this needs to go. We're we're 5 weeks out and we don't have any idea how, like this is still too buggy, let's not waste time on it. And this was in particular like views in the editor, which Gregory Cornelius ended up picking up. He, he, I think he was told about it at like a WordCamp in Boston maybe a year, like in the year after 3.5. And so it was always in the back of his mind and then he started poking at it before he was even working on 3.9, for like 6 months before that. And then one time he looked up and he was like, I think we can solve this. And so that's how it ended up happening. But at the time Daryl had attempted it and it was one of those things where if he kept working at it we would have gotten it right but nothing else would have gotten finished. So we needed more time, it was between that and the customiser, which again the customiser was a very similar feature, it was, the codename for it was Gandalf. And the reason why is because it was originally designed to be a wizard. And it never had wireframes, sketches, thoughts, storyboards, anything, it was, Jen had said we need to do this, and Daryl had experienced doing some things like this with like the Elastic theme, and Visual CSS Editor, his Google summer of code projects in many ways were precursors to the customiser. But we had, there was no real vision for it, and so the biggest problem is that we were building vision with the customiser, with media. Everyone wanted media [inaudible] and no-one knew how, and this was a great example of no plugin had done it well. So yeah, I mean it, it ended up working out well but I think that was the, those were the main reasons why we needed to do features as plugins. And if Daryl hadn't left Automattic after 3.5, 3.6 would've been developed like that, for sure. And 3.6 was then like the final nail in the coffin that was already pretty much completely closed. But with 3.5 especially it was one of these things where like we needed to do, you know I was, I was working around the clock, we were, it was, it was heroic and then I, Matt said this in particular like, if you need, and I don't actually agree with it, but if you need to have heroic actions to hit a date then something else went wrong. And I think actually it's a good, I think it's, in theory it's, it's absolutely correct, in practice of course it goes to shit right away. But, it, I mean, it's a great release, I'm glad we got it right, but-#
Interviewer: It nearly killed you guys?#
Nacin: Yeah.#
Interviewer: Yeah.#
Nacin: And he had just, and Daryl, the worst thing was that Daryl had just come off the 3.4 with customiser. So he was already, I mean he was back to back two, the two biggest, two of the biggest features that define WordPress as they are today. That you could not imagine without them. He conceived in his little lab, right. Like I mean I, I helped, and whatnot, but it was him. So which was pretty, pretty incredible really. But I mean he was beyond burnt out, we were both working 80, 90, 100 hours easily. I was tr-, at that point I was tracking my time in RescueTime and there's just this giant spike from November to December that is just absurd. And I was, I was also getting married 3 months later so my wife really loved this one.#
Interviewer: Yeah I bet she did.#
Nacin: Yeah. She's like when 3.5 is over, you're mine. She actually, she jokes that she has 3.5 PTSD. And she, she's actually serious, she like, when, when I told her I was going to lead 3.7 she, she was very upset. She did not like that idea. And then I talked to her about it and I was like it's going to be different, and it was, it was very, it was a, the 50 hour work week rather than the craziness, and she was like alright this is good. So then when I was like I'll do 3.9 too, I was like but I promise it'll, it'll be okay. It was actually her idea for me to run, run 3.9, because we were trying to figure out who would do it and she was like you should just bite the bullet and do it. And it ended up being actually fine, it turned into craziness at the end due to security issues, not because of that. That, that's understandable. But otherwise that release was getting released on time no matter what. And it did, so.#
Interviewer: And it did. So how has the development process changed over time, I mean I guess you know back even before you started?#
Nacin: I don't know actually too much beforehand, I really don't. It, it was weird because there were a lot of people contributing and very very few committers. And I think in a weird way, the moment it's, I've thought about this a lot. Adding committers in a way actually might've changed the way people contribute. Because originally committers was not something that you got. It was like, I mean so and Linux is actually an example of this, Linux is, you know the only person who actually has the ability to pull code into the mainline is, is Linus himself. And that's kind of what you had with WordPress, like you had these 4 people, they were the only people who could change WordPress and that was not going to change. And so you had a tonne of other people who were like I will contribute things, because it was, it was still status, right? And once you started adding more committers it became to the point where it's like, oh I'm, but I'm not, I'm not good enough to be a committer? Or something like that, and then that can be a problem, where it's, you know p-, maybe some people stopped contributing because they wanted to get to that point and knew they couldn't, or whatever it might be, or whatever it is, because suddenly it was like, it felt attainable, rather than something that was ne-, it was closed off, it wasn't going to happen, like there wasn't, I mean, at the t-, when Dion got added as a committer they hadn't added anyone for 3 years. And before that, it was, it was 5 years. So I think that changed a lot of things. I think also with 3.0 especially the project, the project became a little bigger and just the usage of WordPress exploded. And so we ended up having just more bug reports, more enhancement requests, more everything, and we couldn't keep up with it. The development models, I think every release we've tried a different development model at this point. And you can go through them, I mean with every f-, and a lot of them, a lot of the features are fairly similar. I mean 3.4 and 3.5 actually were precursors to the features plugins model, because they were both built as a plugin first.#
Interviewer: Which one, the, media?#
Nacin: Media was, was built, Daryl worked, the, the plugin was called Mosaic. Because that's kind of what it looked like, with all the tiles. The thought though was that that way Daryl could just sit in a, in his cave for a month and build a prototype and then, we have a prototype. But the real, the real benefit behind, behind features in plugins and why we were pushing on it so hard is that it needed to be co-, be [inaudible] for a release. And it needed to be easier to say this thing isn't going to make it, deadlines aren't arbitrary, but they were. And you know that, that particular piece of the philosophies document kind of specifically says that, you know, one more feature doesn't need to get in, there's always another release. And the problem is that the way we were building our releases around a single feature or around whatever, it wasn't and they would always delay and whatnot. So the big benefit to building in a plugin, I mean, if we needed to disable the widget customiser, it was commenting on one line of code. If we needed to disable the customiser it was actually commenting on one line of code. Media was a little more intense, but it was, it could have been doable if we needed to. But it wouldn't have been tenable for the, we wouldn't have had anything to release. Or certainly nothing big, it would've been really weird. So that, that really cha-, we were like alright we need to start building features in plugins. Because we have, it's basically building in a branch. But we have the ability to, we have this great plugin architecture or this great infrastructure so we might as well use it. And, and then it, then 3 6. Like after 3 5 we were like alright we'll do 3 6, and 3 6 bit off more than it could chew. And it again, it approached a difficult problem. Like the customiser, like media, it approached post formats. And it didn't have the vision or the stru-, like we had this idea but it wasn't enough. And if it was done in a plugin we would've realised it failed, and it wouldn't have been struggling as much. And there will always be kind of like rapid changes in Core, I mean there's, there's an API that I'm planning for 4 0 that will probably be done on the fly, like it will be, I'll write a piece of it and it'll go in, and then I'll work on another piece of it and it'll go in, and then maybe one piece won't work and it'll come out. Because not everything you know can really be done in this self-contained way, but that's the goal, and in 3, so 3.6 was really the final nail in the coffin at which point I proposed the 3.7, 3.8 process, like how we should do this. We needed to decouple from a release, we also needed a release to do a lot of infrastructure stuff, we needed to reset.#
Interviewer: So was that your suggestion?#
Nacin: Yeah.#
Interviewer: And when did you start having the idea of release leads? As opposed to just free for all?#
Nacin: That came in, so, going back to maybe 3.4 or so, 3.4 was actually a pretty good release, it shipped not, I don't remember if it shipped late or not, I don't think it was, I think it was pretty close to on time, maybe within like a few weeks type of thing, which is honestly fine. But I think it got to the point where we realised that like, Jen wasn't always going to lead a release, and there needed to be someone who was going to be accountable for the release. Because, and especially from a development standpoint too because we were having, I mean we were having a lot of issues with like a lot of the lead developers are, you know, they've been around on the project for a long time and like there's, there are, there's no-one I would rather consult than them but that doesn't mean that they are running day to day. Which is also fine, it's almost like a senior developer status. Which is all, which is fine. Because I mean they're, they're still the best person to deal with the, there's probably two, two standards, that one they're the best people to help architect things and then two also, it's really great because they are the when shit hits the fan and we need to, we need all hands on deck, they're the people with the responsibility to step forward, and that has always happened. But yeah that we, the, Matt wanted some changes, and it ended up becoming that I was already basically de-, de facto leading a lot of these anyway, and it ended up just becoming that you know, it would be me and Daryl kind of, a l-, I think a lot of it was pushing us out there and getting our asses on the line and seeing what we would do with it. And yeah, so that's how that really came out with 3.5.#
Interviewer: Were you lead developer by then?#
Nacin: No.#
Interviewer: So when were you made the lead developer?#
Nacin: Same time.#
Interviewer: At the same time.#
Nacin: Yeah. That was, and that was a fairly weird thing, because like I was acting as a lead, I had now, I had had commit for, at that point I had had commit for about a year and a half, which is in, in most cases not that long of a time, there's a few other people right now who have had commit for about that long as well but it's, in my case working full time on the project I had committed in, you know, a year and a half or two years, December 2012 so yeah about a year and a half. But I had already committed 2 or 3 thousand things, 4 thousand things by that point, like it was a lot going in [inaudible]. And I was essentially functioning as lead developer, and Ryan had, at this point was having health issues. So you know the two people who were full time on the project donated by Automattic both were having, were out for a year essentially. And so the void, like I filled a lot, I filled a lot of one half of that void, Daryl filled a lot of the other half of that void. And just in terms of like, I was already essentially running the project day to day and making it go forward, so it, it was, I knew it would happen eventually so I wasn't really concerned about it, but it was, I think it was an important step to making the title a little more, a little less like a [inaudible] if you will, like in the sense that there hadn't been a new lead developer in 5 years, and there was no re-, at this point there was, it made sense to change it because the people running the project day to day weren't necessarily lead developers.#
Interviewer: Yeah Ryan said that he, there were some problems whereby you, he felt that you weren't being treated as a, as a lead developer, and that, that you should be.#
Nacin: Yeah.#
Interviewer: Do you recall any of that?#
Nacin: Yeah, I think it was, I think it was a lot of respect stuff. I think that sure, you know, I was the new kid. Right, like I was still, I mean so granted I didn't meet them all at WordCamp New York, but I did meet them when I was 21 years old, and you know, basically fresh out of college and you know doing all these things and obviously learning as I go, and you know my, you know my attitude and behaviour and maturity obviously changed over the course of a while, and you know I started to approach the project in different ways and it star-, it made sense eventually, but that doesn't mean that it's easy to see that. But we've had that, we've had that with some other committers too like Mike Schroder, who is awesome, when we first met him, I, we were pretty sure he had like 50 Pixie Sticks before he saw us. He was bouncing off the walls and we were like, who is this guy. And then eventually one day it just kind of clicked, we're like, actually, he is a calm respectable mature man. Like it was just kind of like a funny little like switch right? Like and so I think one of the things that kind of happened with, with that whole aspect of the leads is that it was one of those things where it was like well he's already doing all of it, he's already running, he's running the show day to day, like it makes sense. So Ryan and Mark in particular were pretty strong on that. And I don't think there was any, I think it was more of like institutional lag than anything else. And honestly I didn't have a problem with it, it didn't bother, I wasn't bothered by it because I was still the new kid. Like I was still only around for a year and a half, I totally understand, I wasn't around for the first, you know at this point I've now been around for 4 years so that's, you know, a third of the project. But at this point I had been around for a small, a much smaller fraction of it, I totally get it. Yeah so, it was, there was a lot going on around that time for sure, a lot of discussions.#
Interviewer: About?#
Nacin: About, just like, you know how the project would be led with lead developers, and not. I mean a lot, the, the original release lead idea was in part to render the i-, the, like the concept of a lead developer as not existent. The original idea was, we would put someone in charge of the release and then they would like go back into the pool when they were done. And it would remove a lot of the hierarchy. Which the other problem too is that, you know the, these people were functioning as senior people, they were functioning as like pe-, are they leading, like. A lead developer it kind of like it, it's not really a great title, I guess it's used everywhere so it makes sense but you know, head or chief architect kind of thing, like senior advisor kind of thing. Like tho-, those are the kind of roles that they played, not day to day, like there're, there are different roles for different people obviously, but like Peter doesn't run things day to day but that doesn't mean that he's not, that he's not incredibly useful like his mind itself is really where it's at. So yeah it was, obviously it was a really weird time and discussion and whatnot, but you know it ended up working pretty well with, with 3.5. So I, I got promoted to lead developer, I think I was, that happened, and then I was, and then it was, I was announced as leading 3 5. Like within a few weeks. The decisions came together.#
Interviewer: Yeah one of the things that Matt said was that he doesn't like hierarchies.#
Nacin: He likes hierarchy when he's at the top.#
Interviewer: Yep.#
Nacin: He wanted it to be him, and release leads, and then no-one else. And then everyone else. Like it was a bucket. And I don't, maybe he thought it wasn't working. The fact that I wasn't a lead probably played into that, where there were lead developers and then there was me, and also Daryl, who were doing the bulk of the day to day work but we didn't have that title, so the thought was that maybe those titles didn't mean anything, when I thought they did. I thought they, I thought they were seniority not in terms of you've been there longer, but also that like the, the advisory architecture role of it. And so yeah, I mean it ended up being, it was this really weird situation where you had basically you know, Matt wanted to, I mean and Matt is, Matt is the public face of the project and whatnot, but he wanted to lead the project without having a, really without having like a proper development team in place to be able to push things forward at that level. And you end up seeing it in very weird ways because if you think about it, features are n-, are getting developed in other regards. Like you have-. There, there's a number of different ways to kind of like arrange it. But it's almost like you have, you know random ad hoc leadership with each release, but that doesn't mean that, that it hurts to have like the, the bigger role.#
Interviewer: Did you think it was working?#
Nacin: As it was?#
Interviewer: As it was, the structure.#
Nacin: For the most part, yeah. I do. There's really something I should probably read. Read by myself. Some stuff.#
Interviewer: So I want to talk to you about the whole phoning home thing.#
Nacin: Sure.#
Interviewer: Because that comes up again and again. So what is the issue?#
Nacin: The issue is that WordPress sends a note back to WordPress.org with some basic information. So that way WordPress.org can return some information to the site. It returns a few things, it sends, it sends a WordPress version, it sends the PHP version and the MySQL version, the locale being used, as a holdover from Multisite, which, this is, it existed in Multisite, it also sends the number of sites and the number of users .#
Interviewer: Okay.#
Nacin: Actually to that, yes, yes it does, it sends the number of sites and the number of users. In addition to yes it's Multisite versus no it's not. And then on top of that it then also sends, it does send the URL of the site. And I mean we, it would, we would get the IP anyway, like there would be other things that we would get from this, from there that would be fairly identifiable, but the point is I, the biggest thing is that people don't, they don't like it for a few reasons, they don't like it because the URL goes there, they don't like it because we don't end up with the right, you know, you don't end up with the right... Like we get data points, the alternative could be that there could just be an API that shows the current version. The API just hits it anonymously and it s-, and then it does the comparisons locally. The problem is that we have been able to use this very much to our advantage. Auto updates for example are personalised, essentially. They're, it's, the offer is based on what's on your site.#
Interviewer: Could you do the auto updates if you didn't collect all that information?#
Nacin: So like some of it, like PHP MySQL version, we actually do use for compatibility. We do, we will only offer you those, like, you can only use, you can use this version but only if it's greater than this PHP version. But we didn't, like we coded that in into the API, without needing to modify the install. Because like the install didn't have the PHP MySQL version. But we did have it in the API, so we could actually just not offer the option. We could do a lot of what we do in the install itself. And it's not about protecting that code, rather it's about the flexibility that we have by being able to process it through the API helps a lot. It, so, and we've used this to our advantage a lot of times. And even if we hashed the URL it would still need to be a one way hash. Which means that it would be reproducible, which means that it if I wanted to find a URL somewhere and then find a WordPress site and then look it up, I could. Right, like I could still look up that data. And there's no proposal other-, like we, we, we aggregate and anonymise, but there's, you know, the, the main concern is that people wanted the URL to not be sent. And the main response was this is academic. It doesn't matter. And it's true, it really honestly doesn't. And the other concern is that disclosure, it's not obviously said that WordPress does this. I don't have as much of a problem with that, I really don't, because of the fact that first off, I mean, the update checks are incredibly important. And secondly, it's not sending back anything that's, that's, that's of a personal enough, it's not sending back email addresses or anything like, anything like that. It's also not, I mean and obviously WordPress needs to communicate with WordPress.org for a whole lot of other things, otherwise you wouldn't be able to install or update plugins, update Core, install themes, update themes, you wouldn't get the, the news box in your dashboard, like we talk to WordPress.org for all sorts of stuff. So it's kind of implied that this is happening. And yeah I mean I wasn't around obviously for the initial stuff, this is back in I think 2 3 when they added the update notifications and then 2 7 added the button. I, I think for the most part it's no longer argued about.#
Interviewer: For the most part, I mean the first person who raised it was Mark Jaquith.#
Nacin: Sure, yeah.#
Interviewer: But he seemed fairly quickly, was brought on board with it.#
Nacin: Yeah, I mean once people understand that like oh, you're trying to do cool stuff with this, I get it. I mean we're not, obviously we're not selling the data or anything like that. In fact there's, WordPress.org has a terms of service that very clearly dictates what we can and cannot do with, with data that we collect from users, which includes this. Right, like it, it's very specific that like it's, it's never publicly dealt with, it's not sold, nothing like this. Like it's just, it's used purely for making the software better and offering a better experience.#
Interviewer: Do you think people's privacy concerns are taken seriously?#
Nacin: I do, at the same time there are situations where very few, very few privacy advocates know how to be pragmatic about it. There's, it's either like all or nothing. There are probably some things that people could propose that are pragmatic and that would be accepted. For example, there could be a note somewhere in WordPress that explains this, or in the read me that explains this. That said, the section title is not going to be phoning home.#
Interviewer: No.#
Nacin: Like, you know what I mean? A line that says you know like WordPress.org periodically checks, you know WordPress periodically checks WordPress.org for things like updates or whatever, whatever, and that's fine, but it, again like any http request that your site sends includes the URL, includes the IP address, includes all this stuff. So, and I mean if you look at like auto updates, my god, we wouldn't have been able to do any of this without it. And a lot of this, everything that we've done lays the groundwork for something else. Eventually I'd like it so you could on WordPress.org say install this plugin to this site, from the site. And without the kinds of data that we collect right now, we wouldn't, that, it, it'd be a fight just to get that to happen. So I'm really glad, I'm glad that the fight occurred 7 years ago now that we kind actually build things with it, so.#
Interviewer: What, what do you think when these sort of big things flare up, and you end up with like huge comment threads, and lots of people arguing?#
Nacin: I think, it's really interesting, I think that we've gotten better at dealing with it. I mean we're really, we're really bad at crisis communication. Terrible at crisis communication. And I don't pretend to have a background in it but I'm fairly good at it. And I take point on a lot of things that might go crazy like a security release, or whatever it might be. With, I'm trying to think of the last big blow-up we've really had.#
Interviewer: Well I guess the Envato thing.#
Nacin: Envato? Capital P, dangit? That one?#
Interviewer: That was even longer ago.#
Nacin: That was, that was a, that was in 3 0, it was in late May 2010. And that was a situation where Matt was, I think Matt just had noticed that there was a lowercase p somewhere, and like we had had the script running on .org for a long time and he was just like hey, we should really do something about this, it's been driving me crazy, and then it turned into, here's the function we have running on .com. And then it was like oh well that's pretty easy let's just do it, so we did it. It wasn't like sneaking it in, it was just like we should do it, yeah that sounds great, and then it became this big blow-up, and we definitely dug our heels in but at the same time a lot of it was because, you know, rather than saying, so many of the complaints for that one in particular was so far out of, so far off the beaten path, I mean it was, you know, you're modifying our content without permission, it's like well really? Because we curl your quotes, add your smileys, correct your m dashes, add paragraphs, you know, we do a lot. We do a lot already on your content. And it's all done carefully and only on display and never on save and all this other stuff. And like, but there's already a lot of stuff that's already happening and I think people, you know, the ca-, the case of a letter apparently just got everyone annoyed. Which I felt was pretty effacing. And you know what, I don't know, it's there. I wish the function name wasn't so glib, but.#
Interviewer: It's rather glib.#
Nacin: We have, we have a few issues with that, we, and there's a, there's a function called doing it wrong, which the biggest problem with that is that it turned into a saying and I hated that. And I so much r-, because I had, I had done it, and I, it wasn't my idea, the name, but I regret it.#
Interviewer: I thought the saying came from you?#
Nacin: No, Westi . And it's by no means me, like it started in open source, like in general the phrase doing it wrong with a little trademark symbol is fairly prevalent. It's by no means just us. But even then like the string that the function spits out says incorrect usage, it does not say you are doing it wrong or anything like that. It, the, the sucky thing is that it started as just a purely internal function, and ended up in the WordPress community at least suddenly being used as a, as a saying, and it drove me crazy, it's, it's not really any be-, it's, it's a little worse, it's like patches welcome is kind of like the same thing, it's like patches welcome can be used helpfully, doing it wrong can be used in a comedic fashion, patches welcome at the same time is a brush off a lot. And, and it gets used as a brush off, and that's part of the problem. So the glibness of it obviously didn't help in this case, I don't, I mean I don't, I don't know how much we would do differently on putting it in.#
Interviewer: The capital P dangit, do you think that's an example of bike-shedding?#
Nacin: I was just about to say that if we had opened up a ticket proposing it it would've had 500 comments, and it either wouldn't have gotten somewhere or someone would have made the decision. Like at some point, you know, yes, I think there's a lot of bike-shedding.#
Interviewer: So that's bike-shedding specifically, when you're going to do something but then everybody argues about it and you get stuck, and [inaudible].#
Nacin: Yeah and specific-, it specifically apply-, right, it specifically applies to something that's very small. It's interesting actually Matt had told me the other day that he thinks we bike-shed too much and I actually don't see it, I think a lot of the, the little things that we're dealing with are for attention and detail. And there's a difference, there's a very distinct difference between getting the, the individual details perfect, and bike-shedding. One is practical and useful and good, because we, honestly we have more attention to detail than most projects d-, most projects do, especially from the user experience side. And, and then on the, on the other side like there's obviously like there's the unhealthy, we can't, we, we can't come to a consensus on this, and it's really interesting I mean you can actually see it on Trac a little bit when we started adding things like favourites and we started tracking comment counts. You can see the tickets that have tonnes of comments or tonnes of stars and no comments or vice versa, like you can see different, you know like if it has a tonne of comments and only like one star, that's probably a time suck. Because no-one else cares about it. Or if it has a tonne of comments and a tonne of stars and it's not an API that hasn't been built yet, chances are it's a, it's a mess. So, I, I think it's interesting, I mean, the one thing I don't like to do is I don't like to just outright dismiss people who have concerns, I don't like to dismiss things as bike-shedding because I think it's just as bad as saying like patches are welcome. But it definitely occurs. And it's good for us to note when it occurs, like we do it in IRC every once in a while, every once in a while we're like actually this last 10 minutes of conversation was not worth it, we should stop. But I don't know, I think, I, I love a logical reasoned argument. And a lot of the times in both bike-shedding and in, you know flare-ups in the community, I like to think that I'm in a fairly reasoned position and a lot of the times the people arguing against it don't bother to see it, don't bother to even also propose a reasonable position.#
Interviewer: Examples of bike-shedding? [inaudible] is an obvious one.#
Nacin: Yeah sure. Quibbl-, quiv-, like quibbling over the wor-, of the wording of an error message.#
Interviewer: Okay, yeah.#
Nacin: Which don't get me wrong, should be gotten done, should be correct. But eventually just ship the damn thing. Again I don't think all of it is bad, I think that, you know, like the, the, the main, the bike-shed, like the colour of a bike-shed, right? At some point you do need to decide the colour of the bike-shed. And you might want to ask for opinion. But at some point you need to make a decision. As long as it gets shut down pretty quickly it's not really that bad to let it happen briefly, it just needs to be controlled. Again like one of the weird things, like the capital P thing, it didn't go through dis-, public discussion. At the same time if it had, it wouldn't have been any better.#
Interviewer: No.#
Nacin: It's a pol-, it's a polarising thing that everyone can grasp. It's going to, people are going to have a problem with it.#
Interviewer: How do you feel about the relationship between Automattic and WordPress? How do you think that is managed?#
Nacin: Very, it's very complicated. It's extremely complicated. I think it's actually pretty good, I, there's always something weird, I think the project itself is very, I think the project itself is independent and benefits a lot from Automattic. And at the same time, could in many ways get a lot, like work if Automattic didn't exist. But we get, we gain a lot from, from having, from Automattic existing, for sure. And that's not even to say like oh yeah their systems team helps like runs WordPress.org's servers, but also just the fact that there's a large co-, like corporate commercial entity to offer credence and whatnot. I mean and they're, they're ver-, so for example they don't compete with contracts like Acquia but they do work as a nice backstop for projects. We can go into a government agency and say, you know, yeah you can use WordPress for that and they're like yeah well does it scale, and like yeah you can use HyperDB and they're like yeah but does it do this, and like yeah you can use this, and what about support and like well, if you wanted to, you could, there is a company you could pay to do that for you. And it's, it's helpful for things like that for sure. It's, it's helpful as an idea even more than in practice, like you might not ever use the support but the point is they like to know that it exists. Because otherwise they would have trouble adopting it as a product.#
Interviewer: What was your position on Akismet being in Core?#
Nacin: Oh we have a long way to go before we get to that one. I think Automattic works in some interesting ways in terms of how it deals with Core. I kind of long ago stopped caring whenever a news article refers to Automattic as the maker of WordPress. But it happened yesterday again in TechCrunch, so maybe I haven't gotten over it. I hate the mob mentality of the community who normally jump up and down in the comment threads for that and it kind of makes us all look bad. It's stupid, and petty. And I would rather someone like me or Mark or Matt or PR at Automattic to reach out privately to a reporter and explain to them the difference. And that does happen. A lot of it's just confusion too, like Automattic acquired ScrollKit yesterday and now Automattic maker, WordPress maker Automattic acquires ScrollKit, and the founder of ScrollKit tweets out that they've joined WordPress, and it's like no. Like I'm so glad that, I'm really glad that you're in the community but you know. I have a, there's a great story of Jaquith, of him, probably at South By, with someone who works at Automattic, and they, they're talking with someone else outside of it, and, and the person asks the guy that Mark is with like, what do you do? And he goes, oh I make WordPress. And Jaquith turns and is like, the hell you do! Of kind of like one of those things where it's like, like I mean Automattic like obviously WordPress.com is big and there aren't many, there aren't many other examples of it. Right, there are very few examples of a website must be identified with the .com, otherwise it gets confused with something else. Not my problem. But, and then also at the same time like there are a lot of people, there are a lot of people at Automattic that do feel like they do the, the big stuff. Right, like they're like, you know WordPress is the minor leagues. Some people, I'm not accusing everyone at Automattic as thinking that, but like if, it can, and not even deliber-, not even deliberately or maliciously like, I think, I would not be surprised if there were some Automatticians that do feel like they're, like the, the c-, the open source project is the, the minor leagues of it. When in reality it's, certainly I would say at least equal. There's, I mean there's definitely some interesting stuff there. I, I have a lot of respect for what they do, I have a lot of respect for what they, what the, what Automattic has done for project, for the project for sure. And I'm also very very pragmatic about a lot of it too. I have no qualms with an article saying for example that Automattic as a chief benefactor to WordPress or, you can structure it every way other than saying, as long as you don't say something that's factually inaccurate, like Automattic owns WordPress, or WordP-, Automattic's WordPress product, or whatever it is, I have no qualms with Automattic and the WordPress word being used very closely together because they, they've, they've earned it, they've worked their ass off, they've contributed a lot of people to the project, it's great.#
Interviewer: What about saying, I mean they hire quite a lot from the project.#
Nacin: Not as much as you'd think.#
Interviewer: Not as much, but like, but they do, which in some ways is a good thing. But speaking to, to you know people who've been involved with WordPress for a long time, they do say that often their contr-, contributions to WordPress actually were down and they find they have a lot less time to work on the project.#
Nacin: Absolutely. So, I think what ends up happening is that, you know, you have someone like Peter Westwood who is a C firmware developer and he's able to c-, he, [inaudible] WordPress is a hobby for him, and then suddenly it becomes his full time job and he's doing that 40 hours a week and the last thing he wants to do at the end of the week is work on WordPress more. And this has happened with a number of people, it's happened with, with Dion, it's happened with Alex Mills, viper007bond, it's happened with a lot of people who you know Alex especially on VIP is like I'm doing code review and stuff for 40 hours a week, like WordPress isn't, it burns me during the week. The last thing, like that's not fun for me to contribute. Or it is fun for me to contribute, I just don't, the end of, like it's, it's, I'm just so weighed down with it. And it's, it's understandable, I, I think one thing that, that Matt's done incredibly well, is he is l-, real-, especially learned from the lessons of what Six Apart had done, and one of the biggest problems that Six Apart did is that it completely cannibalised its community. And it caused a lot of issues. And, and actually Acquia is doing very similar now with Drupal in that they're cannibalising the community, they're scaling all the contracts and they're subcontracting to remaining contractors that are out there, that are, that, that then are pissed off because they, they're, they're not getting credit, they're, they're, they're working for Acquia, it's very different and the fact that it's, that Automattic is way more product focused and not a full service shop, product and service focused and not, not a full service shop for that kind of work, and also tries really hard to hire outside the community, is great. And yeah it depends like there are some people who want to work at Automattic because they don't want to do client work anymore, they don't want to do that kind of stuff and they want to work on the product so they, there's something in particular that really draws them there and that's cool too. At the same time like contributors sometimes run their course. There might be someone who has contributed for years and they want to do something else. And I don't, some, in some cases they haven't been scared away, they don't get tired of it, they just, they want to move on, they want to do something else, or they go to work at Automattic and they could work somewhere else and they realise that their focuses have changed. I mean I love my college newspaper but at some point I had to leave. So like it happens, and it's healthy and it passes along. So, yeah, I actually, I use the term getting sucked in.#
Interviewer: Mmmhmm, yeah people do.#
Nacin: That's, yeah that's the term I use, like they, they get sucked in. And it's, it's interesting, at the same time there's a lot of people who are contributing to WordPress.com and there's more and more communication in there for, sorry, contributing to WordPress.org from WordPress.com. There's a lot more communication on that front because a lot of it crosses over. A lot of the stuff that the themes division is doing is, ties in very closely with either the default themes, or with like the customiser. Or whatever it might be. So, some of the features from, from in 3.9 came from people working at Automattic who weren't working on the pro-, they were just contributing to the project. You know, as part of their job hypothetically but certainly not like, that's not their full time thing. So, I like to just try and think of it as, if I can get a few hours here and there from people that'd be awesome. But you know, I mean, also if after you work with WordPress for a long time, especially if you're at a certain level, you just get frustrated. And not about, not about the project, but just the code, the whatever, like there's something that eventually will just, and that happens with pretty much anything, really so. No, I mean, it, it happens, we have terms for it, but I think at the same time, I mean if you look at the Core committers right now, more than half of them don't work at Automattic. Most of the ones that are, that worked on 3 9 don't. You know, mo-, the vast majority of contributors don't, we have 267 contributors and only 100 developers at Automattic, like as it is already, you know there's, that alone is you know less than a, less than half and it's normally maybe 15 or 20 percent. So I, I think the project would do fine for contr-, contribution wise without Automattic, I think that there are a lot, as I was saying earlier I think there are a lot of other benefits that we get for sure. And there are very few drawbacks. There really are. A lot of people complain, there really aren't any major drawbacks, so. And if anyone ever has a problem, I mean I always say that I think of myself, even though, I mean I do, I am officially employed by Matt but I do think of myself as independent from Automattic and even from Matt from, in terms of like what I do on the project is me. And actually, it's really interesting, every single person who works at Automattic who has commit, had commit, were, were even a lead developer before they were at Automattic. Every one of th-, fiercely independent, all of them. And the people who are stewarding the project forward, fiercely independent. And in the case of like, or, and you know what if you have a problem with my perceived independence then go to Mark Jaquith, because he is most definitely independent. So, but I mean anyone who's talked to me about it I don't think thinks that I'm not.#
Interviewer: When did you join Audrey?#
Nacin: December 2010.#
Interviewer: Okay.#
Nacin: So in, in the middle of 4, of 3.1, in the middle of 3 1 after, I don't know, a little over a year since, after I started contributing, so.#
Interviewer: Do you think that balances it out at all, that you know there's these other people employed by Matt who aren't at Automattic?#
Nacin: Balances out in what way?#
Interviewer: Well I guess, people do get sucked in to Automattic. Or they do into Audrey.#
Nacin: Yeah I think, I think it can. I think it's an interesting approach, I think it helps. I mean you see a lot of it, people getting sucked, sucked in on the, you see it on the support site too. See sp-, like a support moderator gets hired and suddenly poof, they're off the support forums. So it's definitely not limited to just developers, but I don't know, in the case of Core I'm, I guess I'm the, I'm the only one at Audrey who's really full time on that so it's, it's a different perspective I guess, but. You know what Automattic has its, has interesting ways of allocating developers for different projects, and things like that so it's, it's, there's a, there's a whole lot of stuff here, but.#
Interviewer: What about Akismet, then.#
Nacin: Sure, I think the situation we're in is the least bad option of everything. And this is me coming, very pragmatic, of if you install a WordPress site and comment and then all you get is just like 300 spam comments, what makes you think you're ever going to, what makes us think you're ever going to blog again. And I know it's a freemium tool and I know all this other stuff and whatnot, and the new release actually especially made it a lot easier to just go through the process of creating an account without juggling around a stupid API key and everything else, like it's , it doesn't upse-, forcibly upsell or anything like that, like it's, it's very respectful, the way it does it. Like they used to have this thing where like you would just slide to pay, like it's just very much wherever you wanted, like it would give you a smiley face.#
Interviewer: Smiley face, they saw a big increase in sales because of the smiley face.#
Nacin: I believe that. Great. Some people value their, here's the thing, right. I'm glad that users value the time is saved by not having to deal with spam. At the same time, from the approach of I want WordPress to continue to grow, I don't want users to even think that they've lost, that they've gained time. And so, I remember, there was a while ago when we were thinking about what if we did it so, when you first hit the plugin screen, let's say Akismet was gone and Hello Dolly wasn't there, for whatever reason. And there's, that's another great bike-shedding one, Hello Dolly, oh goodness. Let's not talk about that. But, let's just say Akismet wasn't there and you just started with the splash screen, the first thing you're probably going to want to do is install a spam plugin, here are some recommendations. The biggest problem, and, and I actually, I, I was pretty close to agreeing with this originally, of like we should do that. And it's not even a bad idea necessarily. The biggest thing is that I got this from Pete Davies, who worked at Automattic and he's, now he's a data guy at, a data scientist at Medium. And he just, he, he, we talked about it for a while because he was doing a lot of the, the premium, not the premium, he was doing a lot of like the product stuff like VaultPress, Akismet, things like that. And, he, his, I, so I think we were at South By Southwest. And I was chatting with him one day and I told him this idea, because I, at this point I think it flared up for a moment or something, or whatever it is, or I wanted to chat with him about Akismet in general, things like that. And then like, and I told it to him and he goes yeah okay, alright. And the next day he came back to me and he said I think your idea is shit. I don't think he said it just like that, but he was like I think it's bad. [Inaudible]. Because it's not like all the others. It's better. Far better. And I was like yeah, you're right. It is. And the moment we recommend 5 plugins, the spammers will all target the other 4 that don't have the ability to evolve and learn like Akismet does. The reason why the cookies for comments plugin works is because no-one else, no, no spammers care. They know that no sites are going to have it. So, least bad option, if we removed it and I just don't want to discourage people from blogging, I want to give them whatever tool they need. So it, obviously it's very much status quo, we wouldn't add it now, I, I wish that Akismet was a, I mean if I could go back in time I think it would have been awesome if Akismet was a, was a thing that the, that was done by WordPress.org like Pingomatic or something like that, I wish it was this, you know service. But at the same time like look at Mollum and Drupal, like it's not good, it's terrible, I mean. And you know what, they deal with how many billions of API requests, they can, they can go ahead and they could, you know, make sure the servers are paid for. I mean, I'm fine with that, they're, they have like 4 or 5 full time people in there, plus like support people, plus everything else, I mean, they, there's a lot to pay for that, and you know, it works. It works. So it's really tough to, from just the pure pragmatic standpoint, like if you removed the fact that it was a pre-, if you removed, if it was, if it wasn't, how about this, if it was free, people would still complain.#
Interviewer: Probably.#
Nacin: They did, because they did. Because before, it used, it used to be that, that there were, they didn't try and do, like there was a premium component but they didn't even in any way mention it or anything like that. And just I guess the problem was just that it was just this, like just from a purely pragmatic standpoint of trying to fight spam, like to want to remove it is just, what's the damn saying for it. Can't, is it like can't see the woods from the trees, or something like that?#
Interviewer: Yep, can't see the woods for the trees.#
Nacin: Like congratulations, you've now removed this thing, and everyone suffers. Like your theoretical and even somewhat mildly practical issues with this premium thing being in there, cannot make a bank off of it, they're trying to basically pay for the thing to keep going and, you know, suddenly affects everyone in an incredibly practical and terrible way. And honestly the alternative is if it doesn't get bundled, it's the first, it's a giant [inaudible], install Akismet, like how would we not do that, like it would be such a terrible experience for the user who wanted to get out of the zip package and present it, present the Akismet row and just fake it, and instead of activate it's install like I don't, like at some point it's just academic as to whether it's in the zip or not, so. I think one of the big, one of the big helps though for both Akismet and Hello Dolly, is that it used to be that when you deleted it it would come back on an update. And now it no longer does that, and that's been like that for, since like 3 2, 3 3, where updates no longer touch WP content because plugins and themes can be updated separately. It'll install a new one, but it won't copy over, it, like it'll install a new theme but it won't install an older default theme that you've already installed. And I think that also helped a lot because it's like, if you don't want it just delete it, and you don't need to delete it every time, so.#
Interviewer: Something I wanted to ask you about, you mentioned earlier that if you went back to uni you would do Computer Science.#
Nacin: Yeah.#
Interviewer: So, you weren't around, but there was the whole Habari thing, and it seemed then that a lot of the people who were dissatisfied were come, came from Computer Science backgrounds, or as you had like [inaudible] etcetera.#
Nacin: Yeah but I mean like Ryan and Westi both have Computer Science backgrounds.#
Interviewer: I'm just wondering if that has caused friction at other times?#
Nacin: It's a good question. We've definitely had a number of people with Computer Science degrees, I mean contributor Mike Adams is what a, Comp Sci, and Quantum Physics, and you know.#
Interviewer: I mean Ryan said that when he, he had to basically relearn everything because he had to try to forget the way that he'd done things at Cisco, and the way that-#
Nacin: Absolutely. So here's the thing, I, I don't think anyone uses WordPress for its architecture. They use it because it's a great platform and a great ecosystem. I would love for it to be a better platform architecturalised, and I think that's definitely in the goals, I think we work with the cards we've been dealt, and I think we have a long way to go. I think we also have a lot of room for improvement. At the same time, it's not that we don't know how to do it the right way, quote unquote, it's that it would raise the barrier to entry too high. That's the big issue. Sure I could do all these crazy things, but it's too complex for the vast majority of the ecosystem. So I mean PHP has been doing this too, PHP has been growing more and more complex. And all that's happening is that all the PHP develop-, the, the script kiddies are using the same stuff that they've been using all this time. There's still the same shit, the same crap. So, while maybe it's a better tool for some people to build on, the vast majority of people aren't, and in our case, I mean, whenever, like when we introduce APIs and whatnot, we need, like, it's too easy to over-engineer. It's too easy to over-engineer and it's also too easy to engineer to the point where it's like, congratulations you've abstracted this perfectly but why? Like at some point, at some point it's just, it doesn't make sense. From a, from a, it just, I don't know. I love, I love engineering problems, I love trying to improve architecture, I think we have a really great roadmap and vision for where we want to take a lot of areas of Core, and where we want to go with, you know, with better modelling, and better, you know like a better controller pattern and things like that, but you know we're not just going to rewrite the thing in, in Ruby or go straight to MVC or anything like that. Anything that's going to have a WordPress flavour to it, even if we adopt let's say, MVC for the admin we would never call it that, and it probab-, it might not even be recognisable as that even though it basically kind of is. And it's funny because like WordPress, like a theme is actually MVC, no-one thinks about it like that but it kind of is. Where you, you do have, you know your model is basically the query that came in and then you have the, and then you also, you know your, your controller is something in functions.php and then it, otherwise the template loader, and then you have the views as the templates. And by no means am I trying to pawn off what we have as MVC but it's, there's some general resemblance what we have to, to other pretty interesting things. And you know what? It's worked. I mean we thought about this really cool idea on how to redo themes, to use modular themes which was, actually it came from Daryl Koopersmith. And part of the reason why it never went anywhere is because, like this is really funny, we tried explaining it, Daryl and I to a bunch of other people. And we realised it took like 40 minutes just to explain. Just to explain like the difference between the current system and the new system. If the new system was built this way it would be obvious and easy. The fact that it would be a second system on top of it, it ended up get-, it was just too complex. And it was just, it wouldn't be under, it, one of the best things about WordPress is just the simplicity of like the template hierarchy. Things like that. And certain things shouldn't change.#
Interviewer: Do you have any of those old roadmaps, is that something you, you guys wrote down?#
Nacin: For what?#
Interviewer: Well you were, you were saying that you had roadmaps-#
Nacin: Oh I mean well we have, a lot of it isn't. And a lot, a lot of it was never, was like thought about but never fully documented. And a lot of the things we're trying to do now is building more people around, around component teams. To be able to actually write down a lot of these. But there's, in particular there's one, there's one main one for the taxonomy, and one main one for Multisite. And those are, those are the big ones. There's a lot of other things that we want to do like, fixing our modelling, so we have a WP_Post object and a WP_User object, and ideally we'd also want a WP_[inaudible] object, WP_Term object, which has to wait for the taxonomy stuff, and then you'd probably have a interface for those, or those would extend from like a WP object. A more generic model, like WP model, or something like that. And then you can add CRUD interfaces to that, so create, read, update, delete. And methods, and then you can add meta methods because all 4 of them would all have meta. So every single one of them can have an add meta set, meta delete, meta whatever. And then what you'd start to see, you'd actually start to see a sane API that doesn't look like it was, like hacked together over the course of 11 years. And when we get there it's going to be pretty cool. It's going to take a few more years, but we have like we're [inaudible] growing pains. Right, a lot of people used it really heavily as a CMS, and then we went in that direction, and now a lot of people are using it really heavily as a development platform and we're going in that direction too, so. Yeah.#
Interviewer: We should finish soon but I just want to ask you, to finish, what's your position on the GPL? Do you like having a GPL license?#
Nacin: Yes, absolutely.#
Interviewer: Why?#
Nacin: I, I mean a lot of people think that it's a very, it's really interesting how polarising it is. Some people think of free as, do whatever you want with it. I really enjoy that it is contagious. I'm not saying that if I was, if I was doing another open source project, I don't know if I would do it with the GPL. But I'm talking about something random. Like if I was just building something I would just use MIT. But, I think that it's one of the best things that's really happened with the community. And I think that it helps, not only with the ecosystem but with the ethos as well. I don't, I don't like the, I don't like the inevitable, there are some people that are like so strong on GPL that they are like, like you know the, the different levels of like fanboy? Like fanboy is like one of the levels in like the how you feel about something? Like the, the, the extreme could do no wrong kind of thing? The people who are like AGPL, forget about GPL, I don't if you're familiar with the Affero GPL? The Affero GPL basically dictates, it was designed to close the supposed loophole in the GPL, where if WordPress.com was using GPL code and then adding on top of it, since we're not releasing it, it doesn't need to be GPL. The Affero GPL dictates that anything that they've done also needs to be open source.#
Interviewer: Okay, yep.#
Nacin: So if WordPress was Affe-, was Affero GPL, then all of WordPress.com would need to be open source. In practice that's just frikkin' crazy. But unfortunately that is to some people the true ideal. And I think that it, when you compare it to that, like the GPL is pretty mundane when you think about it. But I mean honestly I, I mean this is, this came up a lot with, and I'm sure we'll talk about this more with like Thesis, and things like that, but if you think about, you know, that, I mean you know, there's this one guy who's building a tonne of, who's building this product, and he's like I want to sell it and like great, sell it, sounds great, but you need to give your users the same rights that, the same rights that we gave you. You were able to build this on top of WordPress , you didn't need to, he used to call it like a platfo-, we don't need WordPress we can do it ourselves, then do it yourself. Great, do it yourself. But like we're building a f-, we're building something for free that runs 20% of the internet. I don't really have that much of a problem with saying like yes, it's going to be contagious, and you need to pass off the same rights to your users. And at the same time, you know what? There are a lot of other open source projects that power a significant amount of the internet that are not GPL but a lot of them are, Linux, hasn't hurt them yet. And a lot, I think it helps the community a lot, I think it's, I think it's an ethos thing too. And, you know at the same time it clearly hasn't hurt the ecosystem, for, for money reasons, like for economic reasons, it's a billi-, it's easily a billion dollar industry. Easily. The amount of themes that are being sold and, and people are learning, they realise that they should probably being selling services rather than products. Which is, heck, you can go back not even GPL, go back to The Cathedral and the Bazaar, Eric S. Raymond, who is in many ways the, the founder of the open source movement rather than the free software movement, who basically said that all the philosophical shit that, that RMS talked about is, is crap. We should build, we should beat them on practical, not philosophical, and not, that's not to say that philosophical isn't also better, but we can [inaudible] them there, and when you look at, like he was, he's not a GPL guy, right that's not his thing he's more of an open source versus free software, and, and just if, if you look back at that even he's saying that the way forward is to sell services and support and things like that, not to sell the product, for, not even for that but just for software in general. Software as a product is kind of crappy to, to sell. You should sell everything around it. You could also sell the software but realistically, I mean, I, what's the exact, the exact quote I think from Cathedral, Cathedral and the Bazaar, which I try and read at least like once a year. Is, the software industry is operating under a consistent delusion that it is a product oriented industry rather than a service oriented industry. And, the nice thing is, that with a little cajoling the, the, the WordPress ecosystem has kind of learned that and figured it out. And is selling updates and support, and you know obviously is doing a tonne of work and you know, yes is of course selling themes and whatnot but there, it seems, I don't know, it seems to be working, and no major company that's doing, you know, tens of millions of dollars a year in some cases like you know, the WooThemes or the StudioPresses of the ecosystem, have at, at any point said yeah the GPL affects my bottom line. Because they're like, no it doesn't.#
Interviewer: It benefits them.#
Nacin: Benefits them?#
Interviewer: WooThemes had a big benefit with Jigoshop.#
Nacin: Yeah? Yeah. Could you imagine if they had done that if they weren't releasing their themes under the GPL already?#
Interviewer: Yeah, yeah.#
Nacin: Like how hypocritical it would be? Honestly, the community can benefit like this. Speaking of Habari, we were talking about Computer Science and things like that, some of our most over, some of our biggest pain points are not the under-engineered API like admin menus, but the over-engineered API, like roles and capabilities. Or rewrites. Roles and capabilities were written, was written by one of the founders of Habari. And it is so grotesquely overdone, it's, it's contin-, it's always caused problems.#
Interviewer: What does that mean, to be overdone?#
Nacin: It had far too many layers of abstraction, it tried to do everything and in, in practice ended up being really really painful to work with. It could have been done far simpler, it also was written for a different paradigm. Our development paradigm is incredibly different from Drupal's. And we talk, we could talk about this with backwards compatibility, and with release cycles, and with how it gets built, and everything else but the big, one of the biggest changes actually when you look right at the code is that Drupal focuses incredibly heavily on storing things in the database. And WordPress does almost everything at run time. Everything is a hook, everything is an action, everything ties into itself, post types are just registered in code, they're not stored in the database, we don't store data definition stuff in the database. And, and it ends up being this really interesting aspect where whenever it does involve the database we seem to do it really poorly. Rewrites, roles and capabilities. Roles and capabilities never should've been in the database at all. Ever. Like the, so the actual struct-, the actual array of roles and like the capabilities on those roles, is stored in the database. And it's probably one of the worst design decisions we've ever, like it's just one extra step of why. And, so no I mean honestly Habari is pre-, is not bad. Like it, as an architecture it's good. But at the same time like we can't, sometimes like I mean, the premature [inaudible], also bad abstraction is worse than no abstraction. And that is, that is just as much a, bad abstraction is just as much of a problem in WordPress as no abstraction is.#
Interviewer: So what problems does it cause you?#
Nacin: We want to change the way the capabilities , the roles and capabilities API works so it doesn't suck as much, and we're hamstrung because of the way it was originally implemented. The [inaudible] API just kind of is just not very good. And in reality we could evolve that without much of a problem. But the, and I actu-, I wrote a roadmap on this in 2010 I think, roles and capabilities, I wrote 2 articles on my, on my site, about where we want them to go. And they really are like a precursor also to the taxonomy and the Multisite one. But, and the ticket number is 10201, that's a little palindrome. And it's, because of the way it was written, it was not written with forwards compatibility in mind. And we had that problem a lot. And we actually get, we're really good at that too. We deliberately write things or hesitate things to make sure that, not only that we're backwards compatible, but that we try and learn from the mistakes of, I, let's say I'm fighting with an API from 5 years ago, realising that man if it had done this one thing differently it would've been so much easier. We try and learn from those, and when we write things now, it probably won't be where we want it to be 5 years from now, but at the very least it should be easier 5 years from now to maintain and update it. And keep it backwards compatible.#
Interviewer: So-#
Nacin: Our forwards compatibility approaches are not as honed as our backwards compatibility approaches, but are still very important.#
Interviewer: And the 2 things that are really a problem in that sense are roles and capabilities, and taxonomies? In terms of you, you wanting to change them now?#
Nacin: And having trouble doing so? Yeah, I would say so. There's a lot of areas in WordP-, I mean I could go through, I could literally go through every API and tell you what I hate about it, and what needs to be better about it. And where we should go with it. In a few cases I'd probably throw up my hands.#
Interviewer: Okay.#