Wednesday, February 5, 2014

Talking Discourse: An Interview with Jeff Atwood


One of our company founders, Erica Brescia, recently spoke with Jeff Atwood to ask what to look forward to in the 1.0 release of Discourse. We use Discourse for the Bitnami community, and we distribute Discourse for one-click, easy installation with native installers, as virtual machines and into the cloud

The conversation covers a lot of ground including:

  • Why Discourse is a big giant ball of javascript
  • The MySQL and PHP ghetto
  • The cure for PHP server herpes
  • Upcoming features in Discourse 1.0
  • Why working on small features can be better than the big ones
  • And more

Listen to the interview now or read the full transcript below. Click to play, sit back, enjoy.

Full transcript

Erica Brescia: Hi, this is Erica Brescia.  I'm one of the founders of Bitnami and I'm fortunate to have Jeff Atwood here, one of the creators of Discourse to talk a little bit about the Discourse project and what they have coming in the future as they work up to the 1.0 release.  So Jeff, thanks so much for joining me.

Jeff Atwood: Oh, you're welcome.  It's great to be here.

EB: And to start out, you know, discourse is, while popular still, a fairly new project.  I'd love it if you could tell Bitnami users a little bit about the project and what made you decide to start Discourse.

JASure, so the main thing that motivated Discourse was that I couldn't find any forums that I felt comfortable recommending to people that needed communities.  And community is so important on the web and it just made me a little bit sad really that all the options I could find were ones I would nota feel comfortable installing myself.  They just weren't modern for lack of a better word.  There was a lot of really legacy stuff, legacy technology and there was no like leader.  There was nothing like if you were gonna set up a blog and you talk to somebody about it, somebody will say to you WordPress at some point because it's kind of the obvious choice.  It's open source, it's got a great ecosystem.  
You know it's essentially free and there are so many ways to host it and there are so many plug-ins.  And I want there to be something like that for forums because this idea that you have people talking to each other about a topic is really essential I think to a lot of businesses and a lot of communities too.  So discourse is supposed to be, intended to be the WordPress of forums essentially.  That's what we're shooting for.

EB:  Got it and you know at a high level can you explain a few things that are very different about discourse than maybe traditional forum software like phpBB perhaps?

JA: Sure.  So from a technology standpoint it's a very, very advanced technology stack.  It's essentially – Discourse is a big giant ball of JavaScript that comes down to the browser.  So every time you go to a new page, we're not actually requesting a page for the server.  The JavaScript gets – makes API calls to the server and redraws the page.  This is a fairly new concept.

I think it's somewhat inevitable in terms of building apps for the web that you're gonna start serving around these balls of JavaScript.  So our technology standpoint, it's pretty aggressive, like we don't even support IE8.  We barely support IE9.  This is not a forum you want to pick if you have a lot of really old legacy browsers in play.

We're trying to make decisions that will seem sensible in five to 10 years when this is a very, very mature project and not be hobbled by previous decisions that people made because that seems to be one of the problems with existing forum software is they made all these old decisions and just stuck with them for decades and nothing changed.  So we're trying to make slightly smarter decisions and it's still a forum.  It's still people typing paragraphs to each other.

Another thing that we do that's somewhat unique in addition to the technology is we have a trust system so as users use the forum, they get more permissions to do things and actually help you maintain the forum.  So that way when you set up a forum and you walk away as the moderator or administrator, assuming people do show up and come back there consistently, those people will essentially grow the rights to kind of maintain the forum and keep it tidy so you're not overrun by spammers and the admin doesn't have to be there every day to make sure that happens.  It can just develop a natural ecosystem of people that are showing up every day and participating.  That was really important to us. 

And another small example is images.  If somebody posts a remote image, Discourse by default will eventually pull that image across locally so that it can't break because the web gets so broken with images.  You know the images get moved.  It's bad enough for links but images are even worse.  So on discourse we automatically pull images across for you, for the user, even if they you know didn't make a local copy.  So the topic doesn't get broken in the future.

EB: Very cool.

JA: So things like that.

EBVery cool.  And going back to the trust system, I know that's something.  We use Discourse at Bitnami as you know and that's something that we really liked about the platform.  Did that come out of your experience working on stack exchange and stack overflow?  I mean that's obviously a very related concept.

JA: It did and it is related.  The main difference is that stack overflow and stack exchange are Q&A and fairly strict Q&A.  You know it's basically a place of learning so you can't really tolerate too many behaviors that aren't conducive to learning.  You know you gotta stay on topic very, very strictly.  You gotta answer the question.  You can't just discuss things with the other users and the answers, whereas Discourse is much looser system.

It's not really about staying on topic.  It's not necessarily about learning stuff although I find in most forums you do learn things if the right people are there talking.  But it's not the primary focus of the activity.  It's much more social.  It's a place to hang out, do some stuff and just kind of enjoy the space, you know.  It's like a dinner party.

You gotta show up because fundamentally yes, there's pizza, there's beer, there's reasons for people to come.  But you also come because the people are interesting.  You have interesting conversations with the other people there.  So discourse is really designed to make it easy to have conversations.  Like we rely heavily on email notifications to let you know people are talking to you.

For reading, for example if you're reading a long topic, you don’t have to find the next page button.  Every time you get to the bottom it just – more keeps loading, you know so you're really encouraged to just read, read, read as much as you can.  And when people do start talking to you, you get some really clean notifications about that.  It's pretty basic stuff.  But in the forum space, this is not a space known for its revolutionary technology.

EB: Yeah, I was gonna say it might be simple but maybe wasn't obvious until you started working on it at least.

JAYeah, it's kind like the iPhone in some ways like it's – obviously people need mobile phones but there's pre-iPhone and there's post-iPhone.  iPhone really kind of raised the bar for let's make this a lot simpler, let's make this a lot more accessible.  And I remember just really hating my phone until – and I wasn't even really an Apple fan to be honest.  I didn't like Apple but I saw the phone and I was like, "Gosh, this is exactly what that space needed."


JAYou know, just let's raise the tide for all the boats you know.  And we want Discourse to sort of do that and say, "Look, this is the new standard."  Forums are actually cool again.  Forums had gotten so out of date that I think people got sad when they heard the word forum or saw something that looked like a forum.  They were like, "Oh, no," you know?  I'm gonna have a bad experience.

EBYeah, even if there was really interesting dialog going on in some old forums. I'm really into food and I used to go into cooking forums back in the day and I remember just the way that the forum looked, it was almost depressing even if there was a really lively and great conversation going on so I can completely relate to what you're saying there.  So given – you were talking a little bit about discourse and the newer technologies that you're using with it and also bringing people in and getting them engaged in a community.  Speaking of that, how important do you think mobile support is going to be for Discourse and do you have plans for that in the future?

JA: Well we actually already have mobile layout that works. 

EB: Okay.

JA: It’s been in since September I think, about mid-September.  It wasn't a priority at launch because the people that are populating the forum are people with keyboards basically.

There's a lot browsing scenarios where it's nice to be on mobile and like short responses and stuff like that.  Also uploading pictures is something we want to get to but we'll make that a little bit easier.  But right now it does work.  It'll detect common mobile devices and switch to the small screen layout.  So that part is kind of solved.  I mean it can always be improved but we kind offer – want to offer one experience.  The philosophy of Discourse is you know it's a ball of JavaScript.  That's the app you know.  Rather than downloading the app from an app store, you're just downloading it from the web server which is much more consistent.  You don't have five different apps on five different devices to go maintain like Pok√©mon now.

Just go to the forum and it just kind of works.  So yeah, it's a pretty good mobile layout.  You can try it out and in fact, you know,,  I was really pleased to see that you guys updated it.  We really nag people because this is still a beta project.  It's approaching 1.0.  We think we'll get to 1.0 definitely in the first half of this year for sure.

We can't say exactly when but we really encourage people to update the latest because there's a lot of new features and a lot of bug fixes.  For example the mobile design, something you would get if you hadn't updated in a while.  Then you get that for free.  It's the beauty of open source, just update the latest and you get great new features.

EB: Yeah, I think there was exchange around why it took us a little bit longer to get there but we plan on staying on the latest version now.  So speaking of your 1.0 release, what are you hardening, what other features if any are being added?  What's planned for that release?

JA: There's a couple of key things.  One is – this gets into you know a little tiny bit inside baseball because some of the features are – you know, it depends what you're into, right?
One of the features that does get asked for lot that I think will probably get to soon is polls, this idea of just creating a topic that asks people you know, "Here's your five choices.  Which on is best?"

EB: Oh, very cool.

JA: Yeah because that just comes up a lot.  We knew that going in.  It's just we weren't quite sure how to build it and now we think we're gonna go back and build it in a very simple way because people keep asking for it.  We do on Discourse what I call essentially complaint-driven development.  The more people that are complaining about something, the more I know it's kind of an issue and it needs to be addressed.  And I think that really, really works.  In fact I'm planning to write a blog entry about that.  But one of the things people complain about is I need a poll.  You know, there's no polls here, I need polls, like this just comes up really frequently on a lot of sites.

And we looked at embedding other poll sites and it just wasn't – it was really hard.  They didn't make it easy.  Like one thing we do on Discourse is what we call one boxing where if you take a URL and you paste it in just on a line by itself with the carriage turn, we try to turn it into something cool like a Wikipedia link becomes a description of the Wikipedia article with the title and like the first image. 
You know so you get a nice, awesome contextual link and all you had to do was just paste the URL in.  And obviously we explain on YouTube videos and there's tons of sites where you do this.  And there's a standard for this that a lot of sites respect.  But for polls you know there's nothing unfortunately really workable.  So polls is coming – you know, I don’t know, it's hard to say.  You know you'll have to go to meta and look at some of the things we're working on.

But a lot of it is really driven by what the community – and also what I see people messing up – I hate to say this but like when I go to other discourse forums that are installed by just you know random people and I see things that aren't really working right or aren't looking good, I try to think, "How can we make it so that they get the right experience?  You know, how can we make it right out of the box so that they don't make that mistake in the future?"

EB: Yeah, we take a very similar approach.  We take a look at what support requests are coming in and what people are struggling with and try and build fixes into the product so users don't have to ask anymore.

JA: Yeah, that's the kind of stuff we're focusing on and it gets a little bit polish-y as you get towards the end.  You know it's not gonna be as noticeable in terms of major features that are coming.


JA: In fact that’s one of the advantages.  If you want to look at Discourse now, I really encourage people to do that because I think it's close to being done.

You know there's nothing major, major missing from Discourse at this point unless you have very different ideas what forum software should be but in terms of all the things we got asked for over the last year, it's largely there.  It's like 80 or 90 percent there.  So it's a good time to start looking at Discourse and I think we got our installation bumps out of the way in terms of radically changing our install.  And after we get to 1.0 we're gonna slow down a little bit in terms of actively breaking things.

EBOkay.  And one thing you've talked about is the rule of threes and you've been really clear that you wanted to have three kind of major partners that you worked with before releasing a commercial version of Discourse and kind of putting it out there officially or at least officially in production for companies.  I've seen that you had at least two.  Have you found the third partner and if not what are you looking for in that third Discourse site?

JAWe technically have.  We're still negotiating.  Our third partner is Ubuntu and we love Ubuntu because I worked with them at Stack Exchange, my previous job.  And there's this site, which is great and I – we use Ubuntu you know as our operating system internally.  And we had a great relationship with those guys.  It's just taken them a while to sort of spin up the instance and get everything really going.  So we'll still see – the two original partners are and BoingBoing – I think it's 

EBOh, very cool.

JA: And yeah, those are great communities and we're still getting issues of scale.  Like we haven't – we need to do a larger form.  That was the last sort of step was to do an even – each one was larger than the one before.  Then we get some comfort with size.  And we've put in stuff like subcategories that came up a lot.  Usually for larger sites you need a category and then you need a category under the category so have you two levels of categorization and we're still tweaking some of the ways that works.  But we're still kind of looking for that sort of largest third partner that's probably – we'll be on the road to 1.0, launch a somewhat larger forum.

EBOkay, larger than AskUbuntu or potentially it will be AskUbuntu?

JAWell, AskUbuntu, no that's the Q&A site so this –

EBOh, yeah sorry.  They're next – the next Ubuntu site, forgive me.

JAYeah, that's right.  That's okay.  It's a forum.  They already have a forum.  It's kind of a long, long story.  They're trying to switch over but see the other problem you run into is Discourse does really well for new communities where they don't really have preconceived notions of the way things are.  But where you run into trouble is you have existing communities that you're trying to switch.  This is just fundamentally a hard thing to do because people don't like change and communities collectively hate change.  I mean they really, really will fight it.


JA: So you have to be really careful how you manage it.  The existing thing has to be bad to the point that a lot of people are dissatisfied.  There has to be absolute support from the top for change.  So when I recommend Discourse – and if you read the Discourse website, I'll tell you, you know, "This is gonna work best if you have a new community you're starting.  This is gonna be tough if you have an existing community for a variety of reasons."  Not because Discourse is bad.  Discourse is quite good but because change is hard.  And it's also technically hard.  Like if you're doing a conversion, you have to get all the old data and you have to get the users in, all that stuff.

We've had huge success in new communities and I think the new communities that see Discourse really, really like it.  I mean honestly, I mean I'm obviously totally biased but I really – they like it.  It's fun.  It's designed to be fun.  It's supposed to be fun to use and it is.

But the older community is coming and they're like, "Whoa, you just moved all our cheese," you know and that's not so fun for them.  You know, they're like, "My cheese has been moved.  I don’t know if I like this anymore."  So it's a much tougher, tougher scenario.  And ask a bunch who's dealing with that a little bit.  That's why I brought it up because they have a forum and they're trying to convert some of it over.  They also want to put in blog comments so we're still working with them on getting that going.
So you may see another third partner.  I'm still negotiating with them – Emerge at this point but it takes a lot of time for these larger communities to do any kind of change.  It's challenging.

EB: Yeah, well like you said, it's quite a big move so I suppose that's understandable.  So with the three partners potentially lined up at least and the 1.0 release coming, does that mean that you'll soon have a commercial version of Discourse?

JA: We technically do already.  We've been really dipping our toe in the waters of hosting so we are getting some contracts now with a couple different companies to do forums for them but we're going really slow because we want to figure this out and make sure we do it right.  Our hosting story makes sense now we think in terms of the underlying tech stack on our servers which is not super relevant to the outside world but we think we're comfortable with the way things are running.  So we're starting to do it and anyone who really is interested can email us to talk about it.


JA: And also we're an ecosystem.  I want to mention that you know there's other companies that do Discourse hosting.  In fact there's one that started really early,  I think that's great and a lot of times I'll point people to Discourse hosting because we're not competing with anyone.  We're in WordPress.  We want there to be a great ecosystem of people using Discourse and it doesn't have to be us.

The only thing I do get protective about is I do like to look at your Discourse install and make sure that it's configured correctly because I've seen Discourse installs not do well when they basically are misconfigured so stuff is broken in them because the install wasn't really complete.  And part of that's our fault for not making it brainless to do the install.  But that's hard.  That's really hard.

EBWe certainly know all about that. 

JARight so I would say – just let me finish that statement up.  If you want to do Discourse, you know, you can do it with us, you can do – it's doesn't matter but like maybe paying us so we can help you look at it.

And just give you advice and may eventually document that in blog post – document that in the actual documentation.  Crazy idea, right, on how to do things so that you don't have a broken install because where I've seen it not work is broken installs can go very badly.

EB: Are there certain really common problems that pop up like the top three mistakes that people are making?

JA: You know, I don't know that I've seen enough.  I mean a lot of times the stuff that comes up is stuff we can fix by changing the way the software behaves.  What I have seen is customizations are very risky.  Like if you're gonna customize the install – like you guys added a button which I think is cool.  Like if you go to, in the upper right you'll see the Bitnami button which takes you I think back to the Bitnami website. And that's cool because that's an interesting nav item that I'm considering like maybe we should just offer that as an actual feature.  But sometimes they'll do things like they'll remove a lot of the core navigation and then the users have no way to like fundamentally move around.  Like you've taken away some – you've removed the door to the house.

How are they gonna get in the house, like don't go too crazy with customizations.  It's fine to like do styling and all that stuff.  We want to make that easy and it's much better than it used to be.  But when sites go whole hog with I'm gonna jut rip this UI apart, it gets sketchy.  Like I've seen that go bad a lot of places.  So I would say try to stick with the Discourse defaults.  They're there for a reason.  They are battle tested for the most part.  They're evolving but there's nothing wrong with the defaults the way we install Discourse.  You can't really go wrong with the defaults.

EBYeah I know we took a lot of time designing that nav to try not to interfere with anything in Discourse.  We're in the situation where there's a lot of discussion about different open source projects and configuration and things like that so people come to the forum who have never heard about Bitnami and we just wanted to let them know what we do and what we're all about.  But again we had to be really careful making that because you certainly don't want to break anything in the app that we're trying to build our community on.

JA: No, I think it's great. 

EB: So with the hosting that you're offering, that is going to be the business model, right?  Like the project's gonna be completely open source.  Are there any plans for some type of enterprise version or is the enterprise offering going to be getting your hosting directly from the experts at Discourse?

JAThat's the model.  I mean there's sort of standard and enterprise that we have now.  Most of the people we're talking to are doing sort of the enterprise install which is very white glove.  We do everything for you.  HTTPS is included.  You don't have to think.  We just do all the work for you.  The standard install is similar except for it's not as enterprising.  No HTTPS unless you pay extra.  It's a little bit of a shared – more of a shared instance.  You don't get a dedicated container.

And then as far as the low-end stuff, we're not really wanting to do that.  I've heard – I spoke – I did a keynote at ForumCon last year and one of the pieces of advice I got was that low-cost hosting is really, really dangerous.  A lot of people really had bad experiences with low-cost hosting so we're trying to start at the top and trickledown.  And our trickledown story is actually kind of you guys like Bitnami and you know to the extent that we can make our install easy.  We want to make it easy for people to sort of click a button and get a Discourse forum and then they can run it wherever for whatever hosting price they can get, you know?

They're not beholding to us in any way.  So that's one reason I like working with you guys.  You guys have been very, very responsive.  And I've dealt with a number of people.  In fact I had a call the other day with someone looking at the Enterprise eVersion who had started with Bitnami and he got it up and running with Bitnami.  I was like, "That's awesome, that's fantastic."  And we love that.  You know the more people trying Discourse ultimately the better it is for the – you know again the WordPress type story.  You want this giant ecosystem and to do that you just need to get it front of a bunch of people.  So the low-end hosting story may not be us but we fully support it.  You know, we want people to be able to install Discourse very easily.

EB: Got it.  So just to clarify, it's the installation that differentiates the Enterprise or the setup or how it's hosted as opposed to any product features that a user would notice.  Like the user is gonna see the same thing either way, right?

JAOh, definitely.  No, we don't do that.  I hate that thing where you pay more and you get just the fancy version that has – the good version, we don't do that, no.  Everybody isn't using the same, same version.  No, we'll never ever do that.  I hate that you know where you pay more and get more features.  Ugh, that's the worst.  Everybody has the same version, don't worry.  It's just a question of what kind of hosting.  And you do know you're hosting with the source in our case because we built it, we know it better than anyone else.  There are certain advantages to that, right?

EB: Absolutely.  And how are you hosting it?  Are you using a cloud service underneath or are you using a local hosting?  What's your hosting setup?

JA: Ours if set up a little – we're at which is a data center in San Jose that we heard good things about and it's close to the backbone.  And we have five fairly high-end servers that have latest Ivy Bridge processors, 4 gigahertz, that kind of stuff.  Because we found with Ruby the stack around speed does actually does matter.

The speed of the processor versus having umpteen billion processors.  So we kind of optimize for fast and they're on solid state hard drives so we have a pretty fast infrastructure and there are five machines which means we're kind of over-provisioned for what we have now anyway.  So that's kind of the configuration we're using at the moment.

EB: Okay and you had a great blog post about moving from .NET.  You've been working with Microsoft Technologies for a very long time from what I gather and decided to make the move to Ruby and I saw that you were talking about the fact that it was a lot slower.  But apparently the performance has gotten much better with Ruby 2.0 and you guys have benefitted quite a bit from that it sounded like.

JA: Yeah, yeah, no there's a big difference in compiled languages which is what .NET is and interpret ones like Ruby.  But there doesn't have to be such a wide gap.  With Ruby like they've lately gotten really more serious about performance and one of the guys on our team, Sam Saffron, is particularly interested in this and is just working with the Ruby devs, the core Ruby list to help them sort of make performance more part of their mission statement.  And a lot of it's just finding where you're screwing up.  Like as a programmer, it's usually the little things you don’t think about that get you.  It's not like you wrote some horrible algorithm.  It's just that you didn't look at the speed.  And if you do, it's easy to fix.

 So they're really getting a lot of the low hanging fruit in Ruby now.  At least we're helping them – trying to help them do that where it's just like a couple of calls that are slow in this particular area and they can make a quick fix and then bam, you know, it's twice as fast in that area.  So that's the good news because they haven't looked at performance for so long really.  There's a lot of places that we usually go in and say, "Hey, we could easily speed this up by 2X, you know, it's easy.  There's nothing to – assembly language or anything like that, just a slightly different approach.

 And for example when we started with Discourse we're easily three times faster than when we started which is amazing because we launched in February.  It wasn't super fast but we have a – if you install Discourse you'll get a performance meter, what we call mini-profiler.  It shows times in the upper left-hand corner.  If you log in as a staff member you get this by default so you know how fast things are going.

And we see that all the time so whenever – for example we're just now fixing some stuff where there was a bunch of scheduled jobs like that Discourse needs to do and they were all happening at exactly the same time across all of our instances.  And this caused a performance problem so what we would see is like queries that should take 10 milliseconds taking two seconds.

So when we dug into it we realized hey our scheduler – it's an open source scheduler, is kind of sucking because it's not letting us do randomization of the scheduling.  You know, it's like it must happen every five minutes and they always happen at the same time.  If you're running 10 sites, that's 10 sites in the same operation at the same time and that's a problem.  Whereas if you had a jitter, if you had some randomization around that time, then you'd spread out the load and you've got – you wouldn't even notice it.

So we actually – Sam had to write a special scheduler just for that.  I don't think we were able to patch that library that we're using.  But those are the kind of things that we can figure out because we're looking at performance all the time and if you install Discourse, you're looking at performance all the time.

You can opt out of that.  There's ways to turn that performance meter off but you know, you know when things are slow because a slow site isn't really fun for your users either.

EB: No, that's definitely true.  So you know it seemed like your reasoning to use Ruby versus .NET was largely based around the licensing and proprietary nature of .NET.  Or I shouldn't say Ruby specifically but to not use .NET was based on that.  It didn't seem like there were technical reasons that you chose Ruby if I understood the blog post correctly.  So how has the decision to use Ruby kind of enabled the community around Discourse?

JA: Well, Ruby does have a strong community.  I mean the people that like Ruby really like it and it's been around for a good amount of time.  I don't even know how people were using Ruby in like 2006.  It's just – everything was so primitive.  And computers were so much slower.  Wow, it's amazing to me.  But the people that stuck with Ruby really stuck with it and you have this massive library of gems, you know, common libraries to do stuff.  And you certainly have an audience of people.  They're like, "Hey, I like Ruby.  This is Ruby."  And you'll get wins based on that where programmers are just – you know they're Ruby people, you know.  They know other languages but the prefer Ruby.

And Ruby is – has always had a cache as being a very programmer friendly language, one that was sort of designed with programmers' ease in mind versus something like say C or Java where there's sort of a love/hate relationship with the language.  Most people that use Ruby really, really love it and that definitely has worked in our favor.  If you look at our GitHub graph, you know,, you'll see we have a lot of contributors, a lot of people that know Ruby.  And to be fair, as I mentioned earlier in the call, Discourse is a big ball of JavaScript so if you know JavaScript and Ember.js – I should have probably mentioned that, the framework that we use to deliver all these features from the client side -- then you're gonna also have a pretty good time working on Discourse.

So it's a pretty good blend of technologies.  You know we're trying to get out of the – what I call the MySQL and PHP ghetto, you know, where that's just sort of the de facto standard.  Not because it's actually any good but because well it's installed everywhere so that's what I call server herpes.  Every server has it.  So if every server has it then that's what you gotta use.  But we're trying to sort of break that paradigm up a little bit and say, "Hey, Discourse is so good."  It's a little bit like VisiCalc.  I mean you got – that's kind of a strong comparison but it's so good you want it on your server, even if it requires Ruby and Postgres and Redis and things that are good, you know?  Things that are modern.
And Ruby for example is not like some brand new kid on the block at this point.  It's been around a while so you don't have to worry that you're installing like you know a crazy experimental tech on your server.

EBYeah, I saw that you were happy that Ruby is not a cool language anymore because that means it's mature and established and people are comfortable with installing it which makes a lot of sense.  So you mentioned the Discourse community and I think I saw you have something like 260 contributors now or close to that.  How involved are they?

JAThey're pretty involved.  One thing we run into with contributors, it's hard to give them large things to work on because things that are touching the UI, things that are touching the whole framework of the app are really difficult to get a grasp on.  You know you have to almost be a member of the core team to even attempt something like that.  So part of the art of managing contributors is to figure out like small units of work for them to do.

Plug-ins is a great area for this obviously because if you can say, "Look, this is a plug-in, it's in a sandbox, you can't break anything, you know and it does X, Y and Z, very simple things, very defined things," then you're in good shape.  I think plug-ins are huge for if you're looking at getting an army of contributors.  Our plug-in story is okay.  It's gotten better.  We work on it sort of as we go and it's much more mature than it was at launch.  But we do have a challenge in that sometimes people come up to me and like, "I want to build grandiose feature X," and we're like, "I don’t know if that's gonna work out for you because that's hard."  Because it's hard for us to even you know – sometimes we don't know what we're building.

 You know we have to figure out the UI, we have to figure out what's going on in the server.  There are so many things you have to touch and figure out for these larger features.  So I really - I hate to say this but I really discourage the community from taking on anything large.  But the good news is there's a ton of small stuff, my goodness.  You know there's a billion tiny things that can be improved in Discourse and I love that stuff, you know, I love little tiny improvements that people make.

You do get RSS on the Discourse homepage on each topic and that was something somebody built for us and it was something you can see that they could build sort of on the back end.  You know there's no UI for this, right?  They just said, "Hey, here is an RSS feed, here is the XML, the way it lays out.”  And we did break it once or twice actually but we eventually fixed it and it's working well.  So it's a good example of something you can contribute.  I think you have to look at things that aren't necessarily UI that are sort of behind the scenes and/or plug-ins looking and contributing to a project.  Those are the easiest places to come in.

EBAnd are there any kinds of gaps in the community or areas in which you think, "Geez, I wish we could get a few people involved that would want to take on this aspect or documentation or something like that."

JADocumentation I'm not huge on.  I feel like unless it's kind of – I mean in the source code, if it's confusing areas, I think I would definitely add comments you know to explain like why – why is this code written this way.  You know the why because code tells you how and the comments are supposed to tell you like why, why are you doing this?  Like so where you feel that's necessary definitely you know that's always great to add that to the code.

Documentation I'm not huge on because I feel like nobody reads it, you know, like I don't – I think unless things are sort of right there where you're looking, I don't think you're gonna dig up another doc of documentation and look at it.  So my focus with making things explainable is to put it right next to the thing it's explaining.  You know and that's how we approach it.  So I wouldn't necessarily be looking for a bunch of people to help with documentation and so forth.

Now on meta Discourse like if there's something you find confusing, we have a whole community where we talk about Discourse at and I really encourage people to come on there and talk about it and look for the other topics that probably exist on it first please.  But those are great conversations.  I love those.  We've learned a lot from just discussing design stuff on meta, dev stuff on meta, having those kind of discussions and they are permanent relics or archives that we create, you know.  Discourse has really pretty good search engine optimization out of the box.  Google sees all this stuff so you can search us with Google.  You can search meta with Google to find something.
And I was talking to somebody the other day that said he found a bunch of stuff on meta Discourse that helped him.  So it does work.  So if you want to generate artifacts, come talk to us on meta rather than building documentation per se.

EB: Okay and that was one example but are there any other areas for Discourse for the community where you feel like you're lacking or you need people with specific knowledge?

JA: Not really like I feel like there's a good number of discourse forums out there.  We get a good amount of feedback.  I don't feel lonely where I'm working in a vacuum and there's nothing going on.  That's sort of when I start to worry because then I – it's like nobody cares about your project.  Nobody is using it because nobody cares.  I don't think we've gotten to that point at all actually. 
I think there are places where we're still screwing up that I want to fix.  I'm just continually unhappy like Discourse has come a tremendously long way.  If you look at where we were February 5, 2013 we launched and now I mean it's incredible how far we've come.  In fact at I sort of – we sat down and went through like, "Look at all the things we did."  We're like, "Wow, holy crap, we did a lot of stuff in the last year."

But mostly I really like engaging with the communities that are using Discourse.  I really favor feedback from people that are running Discourse forums of reasonable size and I also like looking in them.  Look at the patterns like what kind of discussion am I seeing on this Discourse forum?  What does it look like, you know, and how can the software help them make that do better, look better, feel better, work better?

So you know I think the way you can help is really by just running a Discourse forum like live in the house with us.  And I love that you guys have done this at Bitnami.  I think that's fantastic.  You know, you're living in the same house we are.  You have the same roommate problems that we do.  If somebody's playing music in the house, we're gonna get just as annoyed as you are, right?
It's a drafty house, all this stuff.  We're roommates which is awesome.  It's the best way to help.

EB: And it has – you know we obviously put a lot of thought and consideration into which technologies we use for building out Bitnami and so Discourse is a very carefully considered decision but we're really happy with it.  I know Bill Tran in particular on our team who is one of our power users is really happy with Discourse so far so we're really looking forward to seeing you know what's to come.  So I've taken quite a bit of your time.  Is there anything that you'd like to say to the Bitnami community as we wrap up?

JA: No.  I will say that Bitnami has been really helpful to Discourse in terms of making it from the beginning fairly easy to set up a Discourse forum – something that was hard.  So we love the Bitnami instances and I would just admonish people like please, please keep your instances up to date.  We nag you about this in the admin consult for a reason but if you install Discourse, please plan to update it unless you're just gonna destroy it and you're just playing.  Keep it up to date.  That's really important and then you know of course for all the latest information on the project.

EB: Great, well thank you so much for your time, Jeff.  It was really a pleasure and we look forward to speaking with you in the future.

JAYeah, I hope it was useful.  Thank you.