1. Library
  2. Podcasts
  3. Developer Love
  4. Ep. #9, Online Civility with Jeff Atwood of Discourse
Developer Love
50 MIN

Ep. #9, Online Civility with Jeff Atwood of Discourse

light mode
about the episode

In episode 9 of Developer Love, Patrick Woods speaks with Jeff Atwood of Discourse. They discuss the evolution of civil discourse on the internet, moderating forum software, and the collaborative nature of programming.

Jeff Atwood is the Co-founder of Discourse and previous Co-founder of Stack Overflow. He also writes the computer programming blog Coding Horror.

transcript

Patrick Woods: Awesome, Jeff.

Thanks so much for coming on the show today.

I'm sure everyone is familiar with you and your work, but just in case they're not, would you mind providing a quick intro and background on who you are and what you're working on?

Jeff Atwood: Sure. I'm a long time blogger, since 2004.

Not one of the original-original bloggers, like the second wave.

Then in 2008 I started working on Stack Overflow, I was a co-founder there, and then in 2012 I left Stack Overflow to form Discourse.org, which is a forum/teamwork tool.

It's a way of getting things done online with a group. So, that's what I'm currently working on.

Patrick: Awesome. I'm curious about your path from blogger, to person that sits central to a lot of communities around the world.

What draws you to the idea of community in the first place?

Jeff: I think one of the key insights of writing from the blog from 2004 to 2008 was how much programming is really a very collaborative activity.

Whereas if you go back in time, like into the 80s, it was really hard to get online and you didn't have this strong connection with other programmers, or you would just go buy a book. That was starting to really change, and to me that was very fundamental, this idea that programmers learn from other programmers and can help other programmers.

That was one of the key insights of, "What do I do with all this blog energy? There's a bunch of people reading my blog, but what can we do? What can we create that would be helpful to other programmers?"

It's one thing for me to sit and pontificate and opine about opinions about things, but that doesn't really solve your problem necessarily.

I was interested in problem solving, like "What can we build that lets us help each other?"

When I talked to Joel Spolsky, I contacted a bunch of people online that I respected and said, "I have all this blog energy and I don't really know what to do with it, but I want to do something."

And Joel had a really good idea, which was there was the site Experts Exchange that had a scammy business model, where they would post answers to questions but it looked like you had to sign up to get the answer.

Which wasn't really true, if you scrolled down far enough you could see it.

But it just felt like being on a used car sales lot, it just felt really slimy.

Joel's like, "We can do this, but in a much more developer friendly way."

And I was like, "I love that idea. I think that's a fantastic idea."

Because I'm not really an idea person, I'm more of an execution person. I have ideas, but I'm all about execution.

So once I had the idea it was great, it was just like execute, execute, execute.

I was lucky to recruit a few developers that I had known and had worked with early on, so pretty early on it was essentially a four person operation.

It was Joel offering advice over the phone every week, which we turned into a podcast, actually, per Joel's recommendation.

We were very transparent about what we were doing, which I think was smart, and that was Joel's idea.

Then working with Jared and Jeff, who I recruited early on.

We had a little mini team building stuff, and that was the genesis of Stack Overflow in the early days.

Patrick: What an amazing story. What would you say you learned from the transition from the blog, to Stack Overflow, to Discourse?

What have you seen and what have you learned about the role of civil discourse and online conversation?

Or, maybe you could talk a little bit about, what do you think of "Civil discourse?"

What does that mean? How did you arrive at that concept as something you really wanted to champion?

Jeff: I think it's evolved. I think the-- I don't want to say "Problem,"but the reality is, if this concept of "Eternal September ,"Eternal September was this early concept of when school starts, all of a sudden all these newbies come on the old school news groups, like NNTP.

I'm talking really old school here, and it was just overwhelming for the regulars because all of a sudden you had all these newbies that didn't know the rules and were doing all this crazy stuff, and it was a season that they dreaded.

I think what happened in the real world was once the smartphone became really popular and really mainstream, I would say this was about 2014, before prices really came down and it was just expected that every man, woman and child on earth would have one of these things. Everybody came online and that fundamentally changed the nature of discourse on the internet.

Because prior to that, it's almost like you only had the-- I don't want to say "Elites," because that's not the right word.

But the techies and the people who got it to some degree, and all of a sudden you have this Eternal September that we're still basically going through, where now everybody and your neighbor is online.

One of the things you're learning, and I have a blog post about this, about NextDoor, which is essentially Facebook for neighborhoods.

It's not a bad concept, but one of the things you learn is that your neighbors are racist sometimes.

Which you maybe wouldn't have known, because how often do you really interact with your neighbors?

You're not going door to door asking, "How's it going?" every day, you're busy.

But all of a sudden everybody has an opinion about everything and they can broadcast it to a vast number of people, so I think the world changed.

The nature of civilized discourse became way more complicated than it was in the Stack Overflow days, which when I was there it was from 2008 to 2012, which predates the big smartphone transition to everyone coming online.

The other thing Stack Overflow benefited from is its really narrow focus, meaning you wouldn't really go to Stack Overflow to discuss the state of politics or any controversial topics.

It's like, "I'm having this really specific Java problem ." And only a tiny percentage of people in the world would care about this problem, so you're cheating.

You can also see this on YouTube, where if you went to some really popular YouTube video there would be an insane number of comments that were ridiculous.

But if you found a YouTube video that was about some really specific narrow topic that only a few people care about, the comments were actually really good.

They were really on target and they were interesting, they would ask subtle questions about what was going on.

There was almost two worlds, the world of the insanely popular stuff and then the world of the micro interests.

Stack Overflow benefited tremendously by being a micro interest site of programming.

Not that it doesn't have its problems, it certainly does.

Programmers are very quirky, as I don't have to tell you, in their own way.

So there was still some governance that was needed.

But it was nowhere near what you would need if like, say, you were running Facebook today, which would be nightmare mode.

Even running Twitter today is nightmare mode.

Because you're like, "Do we kick the president off Twitter?"

Which is an existential question that is so deep that it's just terrifying. There's no right answer to that question, really.

In my opinion, there isn't. So, I would say that the nature of the problem changed while we were working on Stack Overflow.

It also changed during Discourse because you figure Discourse started in 2013 more or less.

I think we had the right ideas in terms of, "Look. Let's build a more general purpose tool for just getting things done and communicating with other people on the internet, and collaborating, and also making sure that we're not yelling at each other constantly."

That was definitely built into Discourse from day zero and it's still a really hard problem , there's a lot of subtlety to get that to work.

It's one thing to just have a fact that says, "Everybody just be nice to each other."That's great to say, it's a lot harder to do. The people that you would really want to read the guidelines and how to behave, these are not the people that are actually going to read that information. Trust me on this.

I'm a big fan of what I call "Just in time interventions," meaning for example, in Discourse the minute you start typing your first post we pop up a little dialogue, and I mean little.

It's got literally three bullet points on it. It's like, "Look. Be kind, address the issue and not the person. It's not about this person, it's about the opinion that we're discussing."

Like, "You're a bad person." Versus "This opinion sucks because X Y and Z. Be specific, and don't attack the person. Here's our community guidelines."

So again, good luck getting people to actually read this, but at least it comes up the minute you start typing.

You're like, "Someone is wrong on the internet."

Which, there's always someone that's wrong on the internet as we all know, so the minute you start typing, Just-in-Time, your first two posts are like, "Let's just remind you that, let's treat each other with respect."

That's the best you can do. There's a lot of tools in Discourse which are meant to be Just-in-Time, meaning at the beginning of sign ups.

Like, "Go read all this documentation."Because nobody is going to do that.

Like, nobody that you would want to do that is going to do that. You're A+ students. Yeah, they'll do that.

But they're already so good that they don't need to read that stuff, they're already good citizens.

So that's been the strategy for Discourse, is "How can we work in these Just-in-Time tools that help people have reasonable conversations that don't devolve into the howling of wolves at each other?"

It's still ongoin g, it's still a challenge. Every week we're coming up with new ideas and new strategies.

In fact, I can describe one that's just come up a few times.

I tend to wait feedback, where it comes up over and over.

To me it's a strong sign that this is a feature you need to build.

You'll always have people that have ideas that are like, "I have an idea. We can build X."

So it's like, "OK. Great, we could build X."

But if it comes up over and over, if ten different people are telling you from ten different sites, they're saying, "We should build X"

I weight that heavily, because at that point I'm hearing it from different communities and I'm hearing it from different people.

It's more of a universal need. One of the things they've pointed out is there's certain topics where certain users will just respond to everything over and over.

In other words, they dominate the conversation in a way that's overwhelming.

Like, they'll write paragraphs and paragraphs to every single reply. They reply to everyone in extreme, excruciating detail.

I'm talking like, TL;DR type of stuff because they feel so strongly about the topic.

That's not wrong, per se, but it's also ruining the conversation because you have one person overwhelming everyone else.

Several people have pointed out that, "Look . We need some automatic system that says to these people that are replying over and over."

It's like, "Look. You're basically in time out on this topic. You've said your piece and now it's time to take a break from this topic and let other people chime in and actually participate, rather than completely dominating the conversation."

That's a feature we haven't built yet, but it is absolutely on my list of things to build because I've seen it happen.

I've seen it happen on my own blog, which has Discourse as its commenting system.

There's a post I wrote about the current political climate, about what the American dream is.

If you actually dig into the comments of that blog post, you'll see this happen.

You'll see people that just wrote novellas about how wrong I was and how Trump was a great president.

They just replied over and over and over, and it just didn't stop, and at some point you're like, "Look. This conversation is over, because there's no point to this. You're just going to keep replying infinitely a nd we're just saying the same things over and over. There's just nothing of value being created here."

So, that's an example of how I approach development when it comes to Discourse.

Patrick: I think it's super interesting.

The role of software and championing and enabling civilized discourse is really clear, it's very thoughtful throughout the tool.

The range of nudges you've built in is really something, so I'm curious, other than community input are there are other processes or frameworks you apply when deciding what should go into the tool?

Is it first principles that you notice, is it something you just intuit from building communities over the years?

How do you know when something should become a first class citizen nudge inside of Discourse?

Jeff: The big one is how many people are asking for it.

There's a lot of people with ideas, and let me just put air quotes, "Ideas."

The thing is, 90% of the feedback you get is just not actionable either. Because it sucks, to be honest.

Or it's just too hard to build in the time that you have, or it's off-mission.

But there's also 10% of the feedback and this is why you have to read it all, because 10% of it is gold.

It's actually really good feedback, excellent ideas, and some of them can be really easy to implement.

So, the challenge here is someone, and I'm very open to doing this work even though it's a lot of work, is basically reading literally everything posted on meta.Discourse.org, which is our feedback site.

I read literally every single post, and I have for the last seven years.

I've spent probably a year reading all the feedback, and you also weight feedback based on people that run Discourse sites.

It's one thing to say "I'm a Discourse user. I just showed up and this is the first time I've ever used Discourse, a nd I have some ideas."

These are the worst kinds of feedback that you can get, because it's basically just a newbie with random ideas based on 10 minutes of experience with the product.

Where you have site owners coming and saying, "Look. I run a Discourse site and I'm noticing X, Y and Z is happening, and it's a problem."

That feedback gets weighted heavily by me, so I think that's another way we look at it.

A third way we look at it is as Discourse, the company, grows--

We have 45 people at the company and we have an internal Discourse that we use to discuss just internal matters, and we have the public site which is meta, and then we have the internal site where we discuss just internal crap that would just be way too much detail for the average user.

We need better tools to track our own work, so some of the features come from us as we grow as a company realizing "Discourse needs to scale better for essentially small teams getting work done."

If you think about the original design of Discourse, it was like, "Look. It's forum software, and forum software is designed for thousands of users."

But when you have 45 users and the expectation is that they're reading almost everything that's posted, not literally everything but close to, because you need to know what's happening at the company. Even then we're noticing that it's starting to get to be a little overwhelming, we're generating enough content with 45 users that we need new strategies for filtering information.

So that you don't come in and say, "Now I have to read 50 topics that came in overnight with 12 to 13 posts each."

Plus we have a chat system, although the thing is that chat and Discourse are two different animals.

If you've ever seen the movie Inside Out by Pixar, which is, by the way, a great movie.

I highly recommend it, but there's two types of memories in that movie, and part of the job of the people in the brain is to decide which of these are long term memories and which are short term memories.

Chat is always your short term memories, like if you're doing important stuff in chat you're fucking up.

Basically, there's no other nice way to say it. Chat is just interleaved and incomprehensible long term.

It's not wrong, it's great for dynamic stuff that's happening in real time. It's necessary.

It's a good form of short term memory , but if you try to treat chat as your long term memory, you're going to have a bad time.

Like, in South Park. You're going to have a bad time.

So you need a tool that gives you long term organizational memory, and that is what Discourse is meant to be.

It does have some chat-like features, for example if you're at the bottom of a Discourse topic and somebody is replying, it'll show you, "3 people are replying to this topic right now."

You'll see replies come in as they're posted in real time.

Like, if three people reply while you're reading the topic at the bottom, you'll see those replies come in.

So, it's chat-ish. It's realtime-ish, but it's not meant to be a chat tool.

We do see people try to contort Discourse into a chat tool, and this usually ends pretty badly for a variety of reasons.

But it's meant to be a tool in your toolkit. Discourse isn't meant to be the one tool that solves all your problems, you could have a ticketing system and Discourse does OK as a ticketing system.

In fact, we're fleshing out that part of the tool a little bit.

It does OK as a wiki system, we have a pretty good wiki option for posts.

It's like a lightweight tool that does a lot of the essential stuff you would need for long term memory as an organization, but it's not meant to be the only software you'll ever need as an organization.

That's A unrealistic, and B just not the goal. We're trying to be this lightweight tool for teamwork that's just enough structure to get things done without being just super overbearing.

Like, you're always seeing people complain about Asana and tools like that where it's just ridiculously complicated to deal with.

So, we're trying to be, I almost want to say "The Trello of groupware," where it's just easy to set up, easy to get started, and it's mediumweight at best, lightweight to mediumweight.

So, that's the way I look at it and the goals for Discourse.

Patrick: That makes a ton of sense.

It seems like you've had access to tons of communities over the past many years, you've seen a lot of what works and what doesn't.

I'm interested in your opinion.

What would you say are the primary traits or characteristics of really vibrant and enduring communities?

Jeff: There's a couple of things. One is that the owners of the site need to participate. That is critical.

You can't have a community where you just set it up and walk away and point random people to it , "Here you go. Go build this thing."

Because you're talking about an empty site at that point.

There's no topics, there's no users, there's nothing to look at there.

It's like walking into an empty restaurant. How does it feel to walk into an empty restaurant?

You're like, "OK. Nobody is eating here. I'm the only person in the restaurant. Maybe the restaurant sucks. This is unnerving."

So, you have to create a sense of activity almost immediately.

I think the best way to do that is to have your own team use Discourse to create topics, to talk to each other, and essentially to avoid email.

Things that you would do in email, transition over to Discourse as a more permanent form of email that's infinitely more searchable, infinitely more flexible.

Doesn't do that thing where when you reply to emails over and over, you get this ridiculous chain of reply to reply to reply t hat's completely incomprehensible.

Email has its place, but as a tool for long conversations and as a tool for storytelling, it's really weak.

A lot of the stuff you do in email, I would transition over to Discourse with your own team and then people will see what you're doing and then emulate it.

Be an example of what you want other people to be and actually use the site, create topics, do things that you would want other people to do.

Behave as if you would want other people to behave and be a regular, showing up.

It's like parenting. 90% of the job is just showing up. So, show up and do the work and use the tool.

I think email is one of the best ways to harvest things we should be doing in Discourse but are doing in a less optimal way than we could.

So, I think those are the best starting points. Be an example of what you want others to be.

Patrick: Do you think it's more important to work on growing the community or retaining the existing members?

It might be a false dichotomy, but I'd be interested in your view on those two approaches.

Given the limitation of time in the day, how should people focus their efforts?

Jeff: I think it depends on what kind of topics you're creating.

If you're creating super technical topics that only your team could comment on, then you're limiting your audience.

You also got to create some topics that are a little bit fun, like "If you could add one feature to our product, what would it be? What's your pet feature that you think our product should have?"

Or even silly stuff, like "Have you ever met a celebrity? Can you describe what that was like?"

For example, one time I met MC Hammer at a VC event and it was very surreal.

It's like, "I'm sitting next to MC Hammer," so I was able to tell that story, which is interesting.

So I think you have to create some content that draws people in. Not too technical, and is fun.

The goal of these communities is to get work done for sure.

But it's also like, "I'm there to have fun. I'm there to be entertained, I'm there to learn more about these people."

You're setting the tone about why people would come there, like "Is this just all business, just all support tickets?"

Because a site that's just all support tickets is boring.

Nobody really wants to read a giant list of someone else's problems.

Whereas if it was more of a combination of, "OK. There's a category for problems, but there's also a category for product improvements."

And I can give you a specific example, like I use Pie Hole, and Pie Hole uses Discourse as their community conversation system.

One of the suggestions I had was for DNS entries, sometimes I want to invalidate DNS entries immediately, but there's no easy way to do this in the GUI.

So I proposed with a little screenshot and I made a little mockup, it's like "It would be cool if in the DNS entries there was a button that just immediately deleted that DNS entry."

Eventually they expire depending on your DNS, if you know how DNS works. So it's not urgent, it was just more like "A nice to have."

It was neat because one of the developers replied to the topic, and he was like, "We could do that. But there's a command line way to do it and here's the command line way to do it."

So, it felt good. It's like, "Look. I'm interacting with the people who run the project," or it could be just some power user saying the same thing.

Basically, it's like "That's a good idea. But just so you know, here's how you can do it at the command line if you really need to invalidate that DNS entry now."

It just gave me a more favorable impression of Pie Hole, that it's a living and breathing project where I can give feedback that doesn't just go into some invisible void that nobody ever knows what happens, which is usually the case with products.

You can give feedback all day long and you'll just get, at best, some generic "Thanks for your feedback. We'll totally process this. Thanks. See you later."

It's much more personal.

That can also be blocking, because say you don't have the bandwidth for someone to actually reply, or you have a product that's used by so many people like Facebook or Twitter, where how would you even manage a community like that?

It's basically impossible. It's not a one size fits all, but I think it can fit for a lot of projects and a lot of collaborative things people are doing online, and that's the goal.

Patrick: That's great. I'm curious, what's it been like to build the business model based on an open source project?

Have you experienced tension between paid users versus the open source community, and how have you navigated that over the course of the Discourse history?

Jeff: One of the things that's been an interesting side effect is we chose Ruby as essentially the default language.

It's Ruby and JavaScript, and Discourse is heavy JavaScript.

We bet on the idea that JavaScript would become this very first class citizen in the browser, basically the default method of building apps in the browser.

Which I think has more or less come true, I think we correctly predicted that was going to happen and that JavaScript would get super fast on phones, which it has.

So I think those decisions were good decisions, and the Ruby decision had some consequences in terms of set up.

It's actually difficult to set up Ruby projects, nobody likes to talk about this because the popular thing is "Ruby's great. It's so easy. Everything's just convention. Just push a few buttons and everything just works."

I will say, to Ruby's credit, we've never really had a problem that was Ruby's fault.

We've occasionally had some memory leaks that we had to dig into, but Ruby has been very stable for us.

It's been reliable and stable, so I don't really have any criticism of Ruby and Rails as a language and as an environment.

But I will say that because Rails is tied to Basecamp, Basecamp does not give a crap about how hard it is to set up a Ruby app.

Because that's not part of their business model, so they could care less how difficult it is to set up a Ruby app.

As it turns out, setting up a Ruby app is not trivial.

It's actually hard, so the ironic thing is that turned into a business benefit for us because we offer hosting for Discourse.

So if you go to Discourse.org, you can click through and it's like, "Look. It's fully open sourced. Here's instructions. Get things up and running in fifteen minutes."

And you can, you totally can.

But we use Docker, and Docker was a very instrumental piece of technology for us because it let us package Retis and Postgres and Image Magic, and all the other dependencies you need for Discourse to work in this one download.

So that is the magic ingredient that lets us have a fifteen minute install, if we didn't have Docker, if you had to manually install all that stuff, it would be hours of setup.

The hosting business has done really well because of two reasons.

One, it's difficult to set up a Ruby app from scratch, although people constantly try to do it.

They're like, "I don't like your Docker setup. I'm going to build it with some other way."

We're like, "OK. Good luck, buddy. Because we've been down that route and this is the only way we support, for good reason.

Because we actually like being sane human beings and not losing our frickin' minds.

So you could do that if you really want to, but we really recommend you follow our main install guide."

The other difficulty, surprisingly, has been email. Discourse is intimately tied to email.

Your identity is your email address. T his is something I learned from Stack Overflow, because when you forget your password what are your options? What do you do? What's the only thing you can do when you forget your password? Email. It's email, and there's a lot of systems now where you literally just get an email, click, and then log in. They've almost done away with the concept of passwords.

Now, I really hope for your sake and for anyone listening to this thing, that you have 2-factor authentication on your email.

Because I want to emphasize how screwed you are, if anyone ever gets access to your email, you are basically toast.

Because that is the key to so much stuff in your life, is your email.

So please, for the love of God, turn on 2-factor auth for your email if you have not already.

Trust me on this. I know what I'm talking about, just frickin' do it.

But as it turns out, setting up email is a giant pain in the ass.

There's not that many services that will do free email anymore because of all the abuse, and the ones that do usually have pretty strict limits on how many emails you can send and what types of emails.

Like, they have to protect the reputation of their IP addresses, which means they have to be very specific about the email.

They can't get too many complaints that, "This site is spamming everybody with a bunch of random emails."

And Discourse, to its credit, doesn't really spam people.

The main emails you would get are, of course, signing up and password confirmation, password confirm.

Then the only time we really email you in Discourse is when, "Look. Your browser has not touched the website in 15 minutes," and we actually test scrolling even.

So, "You haven't scrolled the browser, or you have the browser closed, for the last 15 minutes. And someone is talking directly to you," meaning they replied to your post or they quoted your post, or they mentioned your username specifically.

Again, you're not on the browser. Then we will email you, and that's the only time.

Discourse is pretty modest in terms of the number of emails it will send, although there are ways.

Like, if you want a ton of emails you can go into every category and say, "Just email me everything."

You can certainly do this, and we have this incredibly dangerous setting--

Which I still regret, called "Mailing list mode," where it emails you literally every post that happens.

Some people want this, like if you're coming from literally converting a mailing list, sometimes it's desirable behavior.

But for the average user, not so much. Email ends up being the other forcing function, along with Ruby just being difficult to set up.

The hosting business does really well for us, and because we build the product and because we understand it better than anyone else, our hosting is--

Not to brag, but it's the best hosting, because this is where it all comes from and we're the actual source.

But we also support other people that run Discourse hosting businesses, we don't view it as competitive.

We view it as "The more Discourse, the better." We don't need to own all the Discourse hosting, nor do we want to.

Part of the point of Discourse is, you get control . You can set up your own community and you're not beholden to Mark Zuckerberg.

You can't get shut down because this is running on your server, and basically all you need is a $5 dollar a month digital ocean droplet to set up Discourse.

You also need some form of email support which can be free or maybe some nominal cost, but at most you're looking at $10 bucks a month to run a Discourse instance.

Now this isn't quite as good as something like PHP, which doesn't really rely on email first of all, and runs on ancient hardware because it was written in 2,000 AD.

Whereas we planned for virtual private servers and more resources, because we're a Ruby app.

We try to be very efficient, but we're not going to fit on a 512 megabyte server that's shared with a bunch of other PHP apps. That was never the goal.

Patrick: How did you make the call to build on Ruby in the first place?

Jeff: It was just my co-founder, Robin. That was his background.

We looked at three things, we looked at Node, Node.js, Python and Ruby.

Node, I discarded, because in 2013 Node was just like so in flux. I felt we would rewrite the app four times if we picked Node, which I think turned out to be true.

It was a good call. Then Python versus Ruby, I didn't have strong feelings but Robin Ward, one of my co-founders from Toronto, had such a strong Ruby background.

Then Sam Safran, my other co-founder, happened to have a pretty strong Ruby background.

So that made the decision for us, and we have been happy with Ruby. It's performed really well for us and hasn't caused problems, and the Ruby community is very supportive.

I don't mean to sound negative about Ruby at all, and in fact the one downside, the difficulty of setting up a Ruby app actually helps us sell hosting packages.

So, I can't even complain about that.

Patrick: Right. We're a Ruby shop here at Orbit, so I was just curious about the origin story there.

I couldn't agree more about all the aspects you've shared about the language.

I'm interested, thinking about your career from the blog to Stack Overflow to Discourse, what would you say has been your proudest moment?

Jeff: My proudest-- Actually, my proudest moment was after I left Stack Overflow, John Carmac who is a programming God said in a tweet--

I feel like I should print this tweet out and have it framed, he's like "Stack Overflow has added billions of dollars of value to the programming world."

I was like, "Holy shit." That was the ultimate compliment from one of the best programmers in the world.

That was a good day, to hear that, and to hear also people compare us to Wikipedia is also very complimentary.

In the sense that we're this global resource, we are Creative Commons license, like we don't try to own all the data.

In fact, we try to make it so that we can't pull that trick where we steal all the content and put it behind a locked door just because that's what we decided to do.

The Creative Commons license enforces the idea that all this information belongs to the community, because it was generated by the community.

It's not like I was on there answering every single question, that's not even humanly possible.

It's the result of all this collaborative work by all your peers, and that belongs to the world, that belongs to everyone.

Stack Overflow has tried to live up to that reputation, and comparisons to Wikipedia are also very flattering and make me feel good, and like we were on the wrong track and made the right decisions as we built.

Patrick: We've talked a lot today, looking back. But I'm interested, what's something you're really excited about right now?

Jeff: Right now, it's very iterative.

We've gotten to a point with Discourse where we've been building on Discourse for six or seven years, and the product is-- Obviously I'm super biased , but the product is really good now.

It's the whole "Version 3.0" thing where you're always going to release a sucky version 1.0 so you can get feedback for 2.0 to be a little better, and then 3.0 is where you really start to get your shit together.

I feel like with Discourse , were it like version five, where the core is really solid and there's a lot of work to do around turning Discourse--

I have mixed feelings about this, but turning Discourse into the mythical CMS content management system where it becomes more of a general tool for doing a variety of different things.

It's a Lego building block of the base of What you start with, but depending on what other Lego blocks and plugins you put on top of Discourse, it could become a variety of different types of tools depending on what you need.

I think that's what's interesting now in Discourse, is "Can it be used as a ticketing system? Can it be used as a tool to assign work to other people and make sure that work gets done?"

All these subtleties, I enjoy the subtleties.

I think they're really interesting, and also all the different types of communities are sometimes radically different.

The audiences are so different. One example I like to cite, I think Hopscotch.

I think that's the name of it. It's a programming tool for kids or teenagers, and it's such an interesting community because it's all these thirteen year olds.

Very different than your normal community, and there's another community of people who what they do for fun is they do real time flight simulation.

Meaning, they'll sit there and simulate a flight from New York to San Francisco in real time, like that's their idea of a good time.

Which is great, it doesn't sound that interesting to me, but they love it.

They use Discourse for it and there's several very avid Discourse users that come on and give us feedback.

I really appreciate that feedback, although I can never imagine in a million years going to that site and simulating a flight from New York to San Francisco--

Patrick: Are they simulating it as the passengers?

Jeff: I think as the pilots, I think as the pilot. Yeah, the passenger would be shocking.

But I think it's the pilot. So, that's very interesting to me because they often have different needs and sometimes conflicting needs, and also protecting vulnerable groups.

We try to build in a bunch of tools that protect people, so you're not getting harassed and you're not getting bothered.

There's been a lot of subtlety around that as well, and again being a dude, I don't get harassed.

It's not always top of mind and I have to be reminded of the little ways people can grief you.

For example, one thing we found was that we added an ignore feature so you can actually suppress other people's posts and just not see them at all, which I resisted for a long time.

But eventually I came around on the idea of, "OK. Look, there are certain people that are just never going to get along with each other and they cannot see each other's posts. It's the way it is."

But these people, what they would do is follow the other people around and like all their posts, which was still irritating because if you expanded the likes, you would see that this person that you've blocked has liked your post.

Which doesn't seem that bad, but it is annoying.

So we added a feature where if you've ignored someone, they just show up as a generic icon in the like list.

At least you don't have to be reminded that this person that you intensely do not get along with has liked your post.

And again, that's a subtlety that I would never have figured out if not for getting the detailed feedback from the site administrators on that site and hearing that feedback from the users.

Patrick: The show is called Developer Love, so the one question I ask all of our guests is, what's one thing you're loving right now?

Jeff: For me, being CEO, I like to think of myself as chief happiness officer.

I want my goals for working on Discourse to be a good time, like chill and fun, like you're building something that matters.

You're building essentially an alternative to Facebook.

Like, I don't often explain it that way because it seems like a ridiculously audacious goal.

Like, "Seriously? You're going to replace Facebook?"

That seems laughable.

But I think it's really important that people have the ability to build spaces that they own, that belong to them and don't belong to some megacorporation who can change the rules at any given time, kick you off, suppress your content, etc.

I don't know, I just want people to have control of their destiny and I think a lot of people that work at Discourse, we try to be really clear about the mission.

We're trying to make the internet better and more diverse, not a monoculture of everything being on Twitter and Facebook, which is the way things have been heading.

It's a tough mission, because setting up Discourse is work.

You can pay us to host, but again it's not free.

Whereas if you go to Facebook, everything is air quote "Free," but really you're the product.

Maybe that's not clear when you're doing it, but Facebook collects all this data about you and it's not really free, but it's not $100 bucks a month.

Which is entry level cost for us at the moment, but we are actually introducing a new product called Teams which is per-seat and which will be lower priced, depending on the number of users you have.

It could be $5 or $10 bucks a month. So, I'm glad we're filling in that hole but I would say the one thing I'm loving is the idea that you're building something that matters.

You're building something that is changing the world in a positive way, and it's a big journey.

It's a long journey and it's not going to happen overnight, but that's OK because we have the perspective that this matters and this is important.

This is something that needs to exist, and existing forum software was hideous.

It's gotten slightly better, but go back to 2013 when I started looking at this and I was like, "Sure. Forum software has gotten better."

And no, it totally had not gotten better.

So if you were recommending, "You're building a product, you want to get feedback from your users, just start a forum. Start talking to your users because that's how you get feedback about any product. Like, talk to your frickin' users."

That's the gold standard, and there was no software that I could recommend that wasn't embarrassingly bad that I would be ashamed to install and point people to.

So, building something that you can be proud of that's competitive in terms of features for example, we support 2-factor authentication and have for quite some time now.

That's a really important feature and it's built into Discourse.

You don't have to do anything, you just magically get it and you can be super secure.

Everything's built with safety in mind, both safety of the users and also safety of the data. We try to put you in a situation where if you set this up and then just walk away for three years, you're not overwhelmed by spam. Your site doesn't get taken over by nonsense, it can actually be a sustainable community.

Because the users, assuming you have users-- If you have no users you just have a ghost town, which it just doesn't matter at that point.

If you have avid users, they gain many moderator abilities as they grow in trust level.

So, there's this trust level concept of when you arrive, "We're not sure if we trust you. You're a brand new user, there's a lot of limits around what you can do because we just don't know you yet."

Then pretty quickly, you get to trust level one.

We trust you a little bit more, trust level 2 and trust level 3, and trust level 3 you can do things like retitle topics.

Because one thing I found personally very frustrating is people suck at writing topic titles and even email titles.

I'm sure right now in your email you have some email titled "No Subject."

Everyone has this in their email, and it's so annoying.

Or, just some title that's like, "Hey." Or, "What's up?" God, that's frustrating.

So trust level 3 users can edit titles to make them better, they can also recategorize topics that are in the wrong categories so that things stay organized.

That's one little example of an ability that you just accrete normally by installing Discourse, you don't have to do anything for that to work and those users get mini moderation powers automatically.

So again, safety by default and letting the community-- I don't want to say "Run itself,"because moderation is still hugely important.

There's no way of getting around it, like a site without moderators is doomed in the long term. There's really no substitute for human moderation, no matter what tools you build.

But you can stave it off for a long time with the trust level system that we're talking about, and we try to keep the moderation load as light as possible.

We make it really easy to moderate and remove bad posts and vet things that come in.

They are one click operations, so we try to keep the moderator load as simple and easy as possible.

That's the thing that I love, is that we're making the internet better, making internet to some extent safer and more secure.

Also, you should feel good if you end up on a Discourse, you're like "Cool, this is Discourse. I'm going to have a relatively good experience if I come in here."

Patrick: Jeff, you've been very generous with your time today.

Thank you so much for the work you've done on Discourse and Stack Overflow and beyond, I know Discourse has become an important channel for many of our own community members and customers at Orbit.

We owe you a lot in many ways, so thank you for all the work.

I would ask if people wanted to learn more about what you're up to, I'm sure they know where to find you.

But if they don't, just in case, where would you send people to learn more?

Jeff: Right now, Discourse.org and meta .Discourse.org, if you're interested in the development.

We have a releases category where we talk about what's coming in each release, what's the plan for the new releases, and then we have a blog where we talk about what's new in each release.

So you can get a sense of where the product is going, what's happening, and we try to advance really quickly.

I would say Discourse.org is your first point of landing, and then I don't update my blog very much anymore but CodingHorror.com is my blog.

If you want to see a blog post every three months, then you can go there.

Patrick: Awesome. Jeff, thanks again for coming on the show. I really appreciate it.