I'm one of the team of people working on Terraform, an open source project (commercially backed by Hashicorp, my employer) that provides a declarative machine language for describing the configuration of and relationships between resources in various APIs used for application deployment, infrastructure-as-a-service, etc, and a command line tool for creating or updating real resources to match the declared configuration.

The project has its own real-time chat and mailing lists which we promote as community forums for general Q&A. However, a while ago we noticed that users had started asking Terraform questions on various Stack Exchange sites, currently with a relatively-low volume but apparently growing, and I began voting/commenting on answers and, in some cases, actually answering questions.

Organically, questions seem to be asked most commonly on Stack Overflow, but across the three sites that currently have a tag for Terraform the all-time question totals are (as of this writing):

  • Stack Overflow: 306
  • Server Fault: 27
  • The DevOps Stack Exchange Beta: 7

I have some concerns about the bias towards Stack Overflow given the similarity in theme between Terraform and other software like Chef and Puppet that are often considered off-topic for that site. I did some manual analysis of the questions being asked across all three sites and they seemed to fall into a few different categories:

  1. Usage questions: How to install and invoke Terraform, what its command line options do, etc. Example
  2. Language/featureset questions: How to express certain things in Terraform's configuration language, agnostic of any particular backend system. Example
  3. How to achieve a particular result with Terraform: User perhaps already knows how to achieve something some other way and wants to know how to express it within Terraform's language. Example
  4. Terraform only incidentally involved: Questions about third-party systems that are not really Terraform-specific, but the asker happens to be using Terraform and/or wants a solution expressed in terms of Terraform. Example

Currently we're providing no specific guidance to the community about where to ask questions outside of the aforementioned chat and mailing list, but we'd like to be good citizens in the Stack Exchange community by trying to steer questions into the place where they would be most welcome. Since Terraform sits at the intersection of a few different areas I think there is no single site appropriate for all questions. My instinct for the ideal place for such questions is (using the same numbering as above):

  1. Either Server Fault or Super User depending on whether Terraform is being used in a professional setting. (the latter currently lacks a Terraform tag, and has never been used for Terraform questions as far as I can tell.)

  2. Stack Overflow, since questions about e.g. how to iterate over a list or format values in Terraform's language are similar to those same questions in other languages, with the primary difference being the specific syntax and idiom. For example, I presume Stack Overflow would be an appropriate place to ask about Ruby language features used in the context of Chef.

  3. Wherever one would've asked the question if Terraform weren't being used, which I think would most likely be Server Fault since Terraform is usually used in provisioning and configuring compute, storage and network infrastructure in a professional setting.

  4. Not really a matter for this question, since such problems are not directly addressing Terraform anyway.

Honestly I'm not sure to what extent the Terraform user community can be steered in a particular direction by us, and indeed I'd rather not steer someone to a place where nobody knowledgeable will answer their question, but I'd be curious as to how the Stack Exchange community thinks we should proceed here.

  • Fwiw, speaking as a DevOps mod, the site has been proposed exactly for those razor blade questions. I'd say they are welcome, but raise the question on devops meta for confirmation :) – Tensibai Apr 25 '17 at 19:51

I don't really see what there is to be said. Things seem to be working pretty well, and in this situation, your own documentation is working well, and you guys are clearly on top of things as far as SE goes.

As a SU mod, I don't see it as a great fit within our scope - simply because the average user, no matter how enthusiastic they are, would not be running infrascture in their home environment

Configuration management (which feels like a subset of what you do) tools are on topic on SF, and modern day system administration does involve a fair degree of scripting in many environments.

Programming stuff? Yeah, maybe SO, but I suspect you have a better idea than me. That people are asking there and the questions are still open suggests that the people who are using it are more comfortable, and are looking at a developers perspective rather than a syadmin perspective

Personally what you guys are doing now - having your own documentation and supplementing it and handling questions as they come sounds good. I'd probably considering fleshing out the tag wikis a little more - but let questions find their way to whichever sites are the best for your users.

  • +1 this is way clearer than my tired, rambling answer. – Jason C Apr 25 '17 at 2:05
  • This is really helpful. Thanks! – Martin Atkins Apr 25 '17 at 4:33

So, and of course this is just my opinion, the thought I keep having here is: Don't do anything special, at all. Just, be a part of SE sites if you personally want to, and let your users do the same, and provide no guidance on your end.

See, a few points to consider, in no particular order:

  • The various SE communities are already good about moderating their own content. So if somebody e.g. asks a question on SO that is not on topic at SO, then the appropriate migration / closure / comments / downvotes will ensue, as per usual, as with every other topic that isn't Terraform. So as far as content control goes, there's nothing you need to do on your end.

  • Along those lines, and with that in mind, the best thing you can do there is be a part of the SE communities. Visit the sites, participate in and beyond. If you see off-topic / unclear / etc. questions, handle them within the bounds of SE, just like other community members do. For example: If you see a non-programming question on SO, flag it, leave a comment suggesting where to ask, don't answer it, and let the user figure it out, just like we do with any other question. Make a positive contribution here, independent of your community. This will not only help Terraform questions, but it will help other questions as well if you (and your colleagues and users) choose to get involved.

  • As for what you should tell your users, consider one of these two possibilities:

    1. Nothing at all. If a user chooses to ask a question on SE then it falls in SE's "jurisdiction" for moderation. If they choose to ask through your normal support channels then do whatever it is you do. Just let users do their own thing and give them no special advice, or

    2. Be vague, say "you may also be able to ask on one of the Stack Exchange sites, if you're not sure what site to ask on check the site descriptions or ask on MSE". This is what is expected of anybody, and is the best advice you can give because a) it also gives them appropriate guidance for non-Terraform questions, which is great, and b) you avoid misdirecting users. Different sites may be appropriate for different questions so if you feel you must send them here, don't send them to a specific site.

The thing is, most problems I see regarding other products is when other developers say "Ask your questions on Stack Overflow" (or whatever). Then users go to SO, ask an off-topic question, get confused because they were told to ask there, and sadness follows.

On the other hand, if you just say "Sometimes we watch various SE sites, I suppose you could head to one of those sites" you leave it in the user's hands to figure it out. There is no risk of misguidance. There is only the usual acceptable risk that all people always have which is asking a question in the wrong place, and none of the responsibility is yours.

The other issue is sometimes community policies change over time. If certain questions are acceptable now but aren't acceptable later, and you are also giving specific guidance, then it's your responsibility to keep up with that and not confuse people. On the other hand, if you just send people in this general direction (or don't mention it at all) and let them figure it out through the normal, "natural" processes, everything falls into place with no effort on your part.

Basically, keep it "outside your jurisdiction". Participate on SE sites yourself if you want. Let users come here and get their guidance here. All the info they need is here. You don't need to run any risk of causing conflicts, and there's nothing you can really add beyond what's already here. Keep the line between moderation responsibilities clear, and if you want to keep Terraform questions clean on SE sites, then be a contributing user like any other. It's the best thing you can do.

By the way, all that said, if your user community is large enough and active enough you could always make a Terraform proposal at https://area51.stackexchange.com/.

Anyways, that's just my thoughts on it. TL;DR: Do nothing on your end, and on an independent personal level, participate here. Then everything will happen as it should.

  • Thanks for all this... great food for thought! – Martin Atkins Apr 25 '17 at 4:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .