29

We have a special tag which stands out as a special case on SO. It is a list of canonical duplicates and reference material, high-quality questions.

The existence of this tag has been debated several times (for example here). When it was created here: Setting up a FAQ for the C++ tag people were sceptical, but since then this tag has worked out fairly well.

The main benefit is that serves as a link collection and thereby eases user moderation - C++ user moderators don't have to go on canonical-duplicate hunt nearly as often as others. The consensus seems to be that this tag works OK and is allowed to exist because it is well-maintained and updated.

The "featured" tab doesn't work nearly as well, since it tends to pick up noise such as frequently linked questions and historical lock "recommendation lists", rather than just closed-as-duplicate questions.

Therefore I now propose to introduce a similar tag for the C language, named .

There are many reasons to believe that this would work well:

  • C and C++ have lots of similarities. If the works well for C++, there is no reason why a similar C FAQ wouldn't work out.
  • The user moderators for C and C++ questions are often the same people.
  • The C tag is very active with a lot of high reputation and gold badge ("dupehammer") users that can assist with moderation.

The end purpose of this proposal is to improve the quality of questions posted under the tag.

The only things I see speaking against this is if it collides with other site features, present or planned. For example if there was a plan to implement a working FAQ system then this tag wouldn't be needed.

As for what would get posted under , there are numerous great posts already present and I believe we should be able to build a complete FAQ with content already available on the site. If the community agrees that the tag should be introduced, I'm willing to put together a draft and a tag wiki, both do be actively maintained by the whole C community.

Kindly up-vote or down-vote this question if you agree or disagree with introducing a tag. In particular, please vote if you have experience with using or if you are an active user of .

A draft listing a number of relevant posts for a FAQ has been posted as an answer, for reference.

16
  • 2
    'The end purpose of this proposal is to improve the quality of questions posted under the c tag.' well, a Sisyphean task indeed. More of a dream, (try not to get assassinated over it). Commented May 16, 2017 at 10:22
  • 1
    I think the end goal should be to close more bad C questions as duplicates of c-faq posts :)
    – sehe
    Commented May 16, 2017 at 10:27
  • 3
    If 'i++ + ++i', returning pointers to locals, linked-lists and gross debugging fails were removed, we could delete the C tag altogether :( Commented May 16, 2017 at 13:44
  • 3
    In the Python tag, we use an external site for a similar purpose. Commented May 16, 2017 at 22:34
  • @user2357112 I noticed, but I think that is cumbersome and defeats most of the purpose. You cannot use that FAQ to find canonical duplicates, which would be the main purpose here. Nor can you use SO search on it. If I just wanted an external C FAQ then the comp.lang.c FAQ is pretty high quality overall.
    – Lundin
    Commented May 17, 2017 at 6:40
  • 2
    @Lundin: What? No, it's not an external FAQ. It's a compilation of common question types and appropriate Stack Overflow dupes. Commented May 17, 2017 at 8:02
  • "Nor can you use SO search on it" - SO search is pretty bad and rarely the best way to find things, so that's not a dealbreaker. Commented May 17, 2017 at 8:11
  • 2
    One big problem with tags is that pretty much anyone can edit them. And since the FAQ-info would be highly decentralized, it would be very hard to curate such a list. That’s why we went with an external resource for Python. We have full control over that list and don’t need to rely on something on SO that’s hard to maintain. In addition, we are able to add information there which allows us to disambiguate between multiple duplicate targets.
    – poke
    Commented May 18, 2017 at 6:58
  • Did the Python community attempt to use a python-faq tag though, and then afterwards reverted to an external FAQ? Or was using a tag ruled out from the start?
    – Lundin
    Commented May 18, 2017 at 8:07
  • 1
    We never considered it, and it’s a bad idea in my opinion since such a faq tag would fit very well in my definition of meta tag.
    – poke
    Commented May 18, 2017 at 10:41
  • 1
    There is a limit on 5 tags. Using such as c++-fag tags is abusing the tag system I think. There is documentation, ideally the duplicate link should lead there. I'd rather choose some machine-learning based system to suggest duplicates automatically than the user-maintained list of good questions.
    – Sinatr
    Commented May 18, 2017 at 11:29
  • If this is going to be more general pattern, wouldn't a faq tag used in combination with the language tag be better than [language]-faq? It could scale better to other languages, plus avoid mess of having question tagged e.g. c, c++, c++-faq and c-faq. Commented May 18, 2017 at 11:51
  • @Sinatr The reason why the content needs to be manually added is quality. Documentation, in its current state, is of horribly poor quality. Regarding the machine learning that's easy to say. You are essentially suggesting that we should invent a bot that can debug C code and propose solutions for the bugs encountered - best of luck with that.
    – Lundin
    Commented May 18, 2017 at 11:58
  • This is a duplication of an existent faq, stackoverflow.com/questions/tagged/c?filter=all&sort=linked or if you are using the old one stackoverflow.com/tags/c/?sort=frequent
    – Braiam
    Commented May 18, 2017 at 12:00
  • 2
    FAQs are supposed to go on the tag wiki, not a separate new tag.
    – OrangeDog
    Commented May 19, 2017 at 9:31

6 Answers 6

17

Here are some examples of posts that could be used for a C FAQ. Sure, nothing prevents me from copy/paste this into the C tag wiki, but that will effectively block us from searching through the FAQs.

Types and qualifiers

Declarations

Initialization

Integer arithmetic

Floating point arithmetic

Operators, precedence and order of evaluation

Scope and storage duration

Arrays

Pointers and null

Function pointers

Strings

Dynamic memory allocation

Structs and unions

The pre-processor and macros

Standard compliance

Undefined, unspecified and implementation-defined behavior

stdio.h

Best practices and style concerns

8
  • Do you want us to edit this list or add new answers citing new questions. What should we do if we disagree with some item? (Partial answer: do not just delete it — there needs to be agreement on whether the question is appropriate for the C FAQ list. One possibility would be 'strike through'; enclose the bullet between <s> and </s> tags.) Commented May 16, 2017 at 18:19
  • @JonathanLeffler There will be a FAQ in some way, if not through a tag then through the C wiki. For now this is just a rough draft to show that there's no problem creating an extensive FAQ based on what we already have available. Once some manner of FAQ goes live, in whatever form, everyone can edit it. Probably there needs to be some rules for it. For example I avoided creating a category "crashes and seg faults" or "common problems" as those sort under other categories.
    – Lundin
    Commented May 16, 2017 at 18:24
  • 1
    Why not use this very answer as your “FAQ”? I don’t see the benefit of tagging the questions.
    – poke
    Commented May 18, 2017 at 6:54
  • One section you've not got is "problems using scanf() and family". There's a similar "problems using prinf() and family" section, though it would have fewer questions listed. Commented May 18, 2017 at 6:55
  • 1
    @poke: one problem with using a question here is that it is on MSO, not SO, making it hard to find. Another problem is that the content of the question (if a C FAQ question was added to SO) would not automatically keep up to date with changes in question titles. Some questions have had many title changes over time, though most have stabilized by the time they become candidates for a FAQ — but not all of them are ready to be the FAQ; some will benefit from curation as they're tagged for the FAQ (whether that's by being linked from the 'Definitive List of C FAQs' question or by adding the tag). Commented May 18, 2017 at 6:58
  • 1
    @JonathanLeffler I would say it’s a benefit that it’s not on SO since “maintaining a list of common questions that work as duplicate close targets” is highly meta to me. And I don’t get how changing titles would be a real problem. The question is very likely to be about the same topic even with title changes. So instead of writing down just the title, just add some more information that makes it clear what the question is actually about.
    – poke
    Commented May 18, 2017 at 7:03
  • 2
    @poke: to some extent, it depends on the purpose of the list, but if it is for everyone to use, a question on MSO is too hidden to be useful. If it is for insiders to identify which other question the current one should be duplicated to, that is less of a problem, though the site switch is still not ideal. Title changes aren't a show-stopper; my wording indicated it is a problem (it is a problem), but not that it is a show-stopper. And curation isn't a problem — it's just an observation that nothing is perfect, and still won't be after curation. We may just have to agree to differ. Commented May 18, 2017 at 7:15
  • My intention here is to use this as an embryo to a FAQ. I'll port this list either by tagging all questions listed, or by copying the list to the C tag wiki, depending on what we think is most suitable. One major advantage of the above list format is that we can add categories, which wouldn't be possible just by tagging.
    – Lundin
    Commented May 18, 2017 at 8:16
6

One issue I see that could cause trouble was identified briefly in a comment to another question:

One problem I can see with adding a (currently hypothetical) tag to some questions is that some of them already have a full complement of tags and displacing one to add the C-FAQ tag would lose potentially useful information. I wonder if we need to create a C FAQ question which has one Community Wiki answer with links appropriate questions? This avoids the 'tag overflow' problem — but isn't as dynamic as simply tagging a question.

Some dual-language questions are:

So, we'll need to know how we'll handle this. If you have and , then you can only have one other tag.

Just to be clear — this is not in any sense a vote against the proposal. I support the idea of adding a tag. It is just pointing out a detail that will need careful management when the tag is added.

5
  • 1
    In most of the cases we could most likely drop a tag. For example [function] and [pointers] is incorrectly tagged, it should be [function-pointers]. Most of these overly broad tags like [pointers] aren't very meaningful to begin with. But yeah some of your examples are valid, it would be problematic to drop some tags there. One solution could be to create a super tag called "FAQ" to be combined with the relevant language(s), but I think that would introduce other problems instead.
    – Lundin
    Commented May 17, 2017 at 6:34
  • That "What are function pointers" should be split into two questions, one for C and one for C++
    – cat
    Commented May 18, 2017 at 0:40
  • 1
    @cat Perhaps we should avoid including questions directed to both languages, where the answers will be different depending on language.
    – Lundin
    Commented May 18, 2017 at 6:48
  • @Lundin: that may be why the first two questions I picked are not tagged c++-faq — they're bilingual. I think they are useful (though I admit to a bias since I have a highly voted answer for each of them). The return type of main() is an ongoing issue, with problems caused by the careless, the ignorant, and the over-zealous. The list of headers is a different category of useful — and one I less often cross-reference. Commented May 18, 2017 at 6:53
  • Btw one big advantage with using both C and C-faq tags is that we get the right kind of moderators to maintain the list automatically, namely all C tag gold badge users. Should "dupe hammer" rights be extended to involve other kinds of close reasons in the future, this system remains compatible with such changes.
    – Lundin
    Commented May 18, 2017 at 8:11
4

Conclusion:

The community seems mostly positive towards creating a FAQ.

Regarding using a tag , the following notable concerns were raised:

  • It is a "meta tag" and should therefore be avoided.
  • The main benefit of using a tag - searchability, was not as strong an argument as anticipated.
  • Problems may arise if there are already 5 valid tags attached to the question.
  • The tag system does not allow categorization of questions.

In order to quickly find a canonical duplicate, a categorized system would be faster to use than the SO search system. Therefore I will not create a FAQ tag, but instead move the proposed draft to the C tag wiki. There is already a simple FAQ there, which will be replaced with this more detailed one.

I'll go through the proposed FAQ draft and clean up and protect questions, before moving the list to the C tag wiki. Any help with this or with finding posts that should be on the FAQ is appreciated.

My FAQ draft, as well as proposed moderation rules for the FAQ, are now made community wiki and can be edited by anyone.


EDIT

The FAQ is now live: https://stackoverflow.com/tags/c/info.

2

Proposed C FAQ moderation guidelines

Anyone may edit the FAQ, although it is highly recommended that you have both full edit privileges and a gold badge before doing so.

When adding a question to the FAQ, please go through it and edit posts if needed, considering the rules below:

  • Questions used in the FAQ should be tagged . With the exception of general questions such as "why are floating point numbers inaccurate".
  • Review tags present on the question. If relevant to the question, add C standard version tags: (pre-standard), (ANSI/C89/C90), or .
  • All questions used in the FAQ should be set to protected status.
  • Clutter such as "...in C" should be edited out from the title, according to the regular SO moderation rule that technologies listed by the tags should not be in the title.
  • Questions directed towards both C and C++ must have complete answers that address C specifically. When adding a question tagged both and to the FAQ, the present answers might have to be edited to clarify which language(s) they address, if this is already not made obvious by the answer. Questions that give different answers in C and C++ might not be suitable for the FAQ.
  • There shall only be one FAQ per technical issue. In case there are two high quality question posts that both address the same issue, then either one of them should be closed, or in case they are both valuable, a diamond moderator should be notified with a merge proposal.

When adding a category to the FAQ, please consider this:

  • Avoid categories such as "crashes", "segmentation faults", "common pitfalls" etc. Instead sort such question underneath the category that explains the cause. Example: if the common pitfall is off-by-one array-out-of-bounds bugs, then a FAQ for this should be added under the category arrays.
0

I'd say, what's stopping you?

If you get quality posts to logically group under that tag, it will prove itself.

The end purpose of this proposal is to improve the quality of questions posted under the c tag

You can't hope to control that end. I wager that forces like bad college courses, automake/GNU hegemony and stone-old code bases spawn the bulk of the questions here.

C and C++ have lots of similarities. If the c++-faq works well for C++, there is no reason why a similar C FAQ wouldn't work out.

A difference with the community might be that the C++ appears to have a vocal group of people who advocate (some manner of) a set of good practices. Obviously, there are multiple of these sets competing.

The C++ community might not agree on the answers, but they agree on the absolute need for best practices and therefore the need to find "canonical answers" for the associated problems.

In the community though, seems to be less prevalent, or it has been hard for me to pick up. For the casual observer, it may appear as though a fundamental "Wild-West" attitude to things ("Nobody tells you what to do" and "The programmer knows what he's doing") might not encourage answers in the same way as in the C++ community.

The user moderators for C and C++ questions are often the same people.

I don't know which users those would be. I think I know one or two, tops. This is not likely where your support comes from. I believe the active C++ users like to stay away from the C tag, especially when it comes to moderation of poor questions. Just my $0.02

The C tag is very active with a lot of high reputation and gold badge ("dupehammer") users that can assist with moderation.

There you have it. This is your best ticket! If you are confident that these users can make it work, just lead by example. I'd focus on the quality answers, because that's what dupe-hammerers need: solid answers that show the solution to OP's problem beyond much debate (multiple answers are fine for different approaches!).

I'd say, go for it. I hope the perspective from a user helps shape expectations.

5
  • 4
    "I'd say, what's stopping you?" I rather not invent something like this purely on my own initiative, as it would be a radical thing to do. If there isn't enough people willing to help moderating the tag, then it will perhaps not be successful. Furthermore there might be policies or work-in-progress that I am not aware of.
    – Lundin
    Commented May 16, 2017 at 11:04
  • @Lundin if you don't have a channel to mobilize these peers, you will have to start on your own. Simple as that. You do not need consensus to lead. It's a community after all, consensus emerges. Quality should win. (You seem to know more about the history of c++-faq than I do, but I don't think this came about overnight and pre-meditated. Perhaps I'm wrong).
    – sehe
    Commented May 16, 2017 at 11:05
  • As for the technical content in the C tag, the same kind of best practices are also present at some extent (some examples of arguably subjective best practices stackoverflow.com/questions/605845/…, stackoverflow.com/questions/1433204/…) . But C since does not revolve as heavily around meta programming as C++, there tends to be far less "best practice wars". Note that C++ is going through some pretty radical changes with the C++1* standards, best practice have yet to settle in many cases.
    – Lundin
    Commented May 16, 2017 at 11:16
  • I don't think best practices are related or limited to meta programming.
    – sehe
    Commented May 16, 2017 at 11:51
  • 3
    I find it important to note that I believe @Lundin did exactly right by posting here first. You do need consensus before taking deliberate action to abuse the system (which a tag like this is, technically). Otherwise the one-person initiative will easily be undone by the initiative of another person who finds these actions conflicting with rules on SO. Not that hard to whip up a burnination request for a meta-tag like this, so the best course of action by far is to start from a meta post such as this one. Commented May 16, 2017 at 22:23
-1

You might be overthinking this. What we did over in was we created a couple of rollup questions. It makes duping easy and often helps point people to the right answer

Reference - What does this symbol mean in PHP?

PHP Parse/Syntax Errors; and How to solve them?

They're Community Wiki so nobody is profiting from them. No special tagging needed either.

I do agree we need a FAQ system in SO (I suspect that's what Docs were supposed to be, but that's a separate discussion), but that needs to be a separate

2
  • 2
    It's very interesting to see that ever major language tag seems to have solved this in completely different ways. Which indeed suggests that implementing a working FAQ system should be a priority.
    – Lundin
    Commented May 18, 2017 at 12:46
  • 1
    The system already has a FAQ system, you simply don't use it! stackoverflow.com/tags/php/?sort=frequent
    – Braiam
    Commented May 19, 2017 at 10:11

You must log in to answer this question.

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