How To Ask Questions The Smart Way
This page is mirrored from this
website, dated 14.06.2004. To read the up-to-date,
Raymond approved version of this file, click the above
link. If his site is gone, read here.
Many project websites link to this document in
their sections on how to get help. That's fine,
it's the use we intended but if you are a webmaster
creating such a link for your project page, please
display prominently near the link notice that we
are not a help desk for your project!
We have learned the hard way that without such
a notice, we will repeatedly be pestered by idiots
who think that our having published this document
makes it our job to solve all the world's technical
problems.
If you are reading this document because you need
help, and you walk away with the impression you
can get it directly from the authors, you
are one of the idiots in question. Don't ask us
questions. We'll just ignore you. We are here to
show you how to get help from people who actually
know about the software or hardware you are dealing
with, but 99% of the time that will not be us. Unless
you know for certain
that one of the authors is an expert on what you
are dealing with, leave us alone and everybody will
be happier.
In the world of hackers,
the kind of answers you get to your technical questions
depends as much on the way you ask the questions
as on the difficulty of developing the answer. This
guide will teach you how to ask questions in a way
that is likely to get you a satisfactory answer.
Now that use of open source has become widespread,
you can often get answers from other, more experienced
users, rather than hackers. This is a Good Thing;
users tend to be just a little bit more tolerant
of the kind of failures newbies often have. Still,
treating experienced users like hackers in the ways
we recommend here will generally be the most effective
way to get useful answers out of them, too.
The first thing to understand is that hackers actually
like hard problems and good, thought-provoking questions
about them. If we didn't, we wouldn't be here. If
you give us an interesting question to chew on we'll
be grateful to you; good questions are a stimulus
and a gift. Good questions help us develop our understanding,
and often reveal problems we might not have noticed
or thought about otherwise. Among hackers, “Good
question!” is a strong and sincere compliment.
Despite this, hackers have a reputation for meeting
simple questions with what looks like hostility
or arrogance. It sometimes looks like we're reflexively
rude to newbies and the ignorant. But this isn't
really true.
What we are, unapologetically, is hostile to people
who seem to be unwilling to think or to do their
own homework before asking questions. People like
that are time sinks they take without giving back,
they waste time we could have spent on another question
more interesting and another person more worthy
of an answer. We call people like this “losers”
(and for historical reasons we sometimes spell it
“lusers”).
We realize that there are many people who just
want to use the software we write, and have no interest
in learning technical details. For most people,
a computer is merely a tool, a means to an end;
they have more important things to do and lives
to live. We acknowledge that, and don't expect everyone
to take an interest in the technical matters that
fascinate us. Nevertheless, our style of answering
questions is tuned for people who do
take such an interest and are willing to be active
participants in problem-solving. That's not going
to change. Nor should it; if it did, we would become
less effective at the things we do best.
We're (largely) volunteers. We take time out of
busy lives to answer questions, and at times we're
overwhelmed with them. So we filter ruthlessly.
In particular, we throw away questions from people
who appear to be losers in order to spend our question-answering
time more efficiently, on winners.
If you find this attitude obnoxious, condescending,
or arrogant, check your assumptions. We're not asking
you to genuflect to us in fact, most of us would
love nothing more than to deal with you as an equal
and welcome you into our culture, if you put in
the effort required to make that possible. But it's
simply not efficient for us to try to help people
who are not willing to help themselves. It's OK
to be ignorant; it's not OK to play stupid.
So, while it isn't necessary to already be technically
competent to get attention from us, it is
necessary to demonstrate the kind of attitude that
leads to competence alert, thoughtful, observant,
willing to be an active partner in developing a
solution. If you can't live with this sort of discrimination,
we suggest you pay somebody for a commercial support
contract instead of asking hackers to personally
donate help to you.
If you decide to come to us for help, you don't
want to be one of the losers. You don't want to
seem like one, either. The best way to get a rapid
and responsive answer is to ask it like a person
with smarts, confidence, and clues who just happens
to need help on one particular problem.
(Improvements to this guide are welcome. You can
mail suggestions to esr@thyrsus.com.
Note however that this document is not intended
to be a general guide to netiquette,
and I will generally reject suggestions that are
not specifically related to eliciting useful answers
in a technical forum.)
Before asking a technical question by email, or
in a newsgroup, or on a website chat board, do the
following:
-
Try to find an answer by searching the Web.
-
Try to find an answer by reading the manual.
-
Try to find an answer by reading a FAQ.
-
Try to find an answer by inspection or experimentation.
-
Try to find an answer by asking a skilled
friend.
-
If you are a programmer, try to find an answer
by reading the source code.
When you ask your question, display the fact that
you have done these things first; this will help
establish that you're not being a lazy sponge and
wasting people's time. Better yet, display what
you have learned
from doing these things. We like answering questions
for people who have demonstrated that they can learn
from the answers.
Use tactics like doing a Google search on the text
of whatever error message you get (and search Google
groups as well as web pages). This might well take
you straight to fix documentation or a mailing list
thread that will answer your question. Even if it
doesn't, saying “I googled on
the following phrase but didn't get anything that
looked useful” is a good thing to be able
to put in email or news postings requesting help.
Prepare your question. Think it through. Hasty-sounding
questions get hasty answers, or none at all. The
more you do to demonstrate that you have put thought
and effort into solving your problem before asking
for help, the more likely you are to actually get
help.
Beware of asking the wrong question. If you ask
one that is based on faulty assumptions, J. Random
Hacker is quite likely to reply with a uselessly
literal answer while thinking “Stupid
question...”, and hoping that the experience
of getting what you asked for rather than what you
needed will teach you a lesson.
Never assume you are entitled
to an answer. You are not; you aren't, after all,
paying for the service. You will earn an answer,
if you earn it, by asking a question that is substantial,
interesting, and thought-provoking one that implicitly
contributes to the experience of the community rather
than merely passively demanding knowledge from others.
On the other hand, making it clear that you are
able and willing to help in the process of developing
the solution is a very good start. “Would
someone provide a pointer?”, “What
is my example missing?” and “What
site should I have checked?” are more likely
to get answered than “Please
post the exact procedure I should use.” because
you're making it clear that you're truly willing
to complete the process if someone can simply point
you in the right direction.
Choose
your forum carefully
Be sensitive in choosing where you ask your question.
You are likely to be ignored, or written off as
a loser, if you:
-
post your question to a forum where it
is off topic
-
post a very elementary question to a forum
where advanced technical questions are expected,
or vice-versa
-
cross-post to too many different newsgroups
-
post a personal email to somebody who is
neither an acquaintance of yours nor personally
responsible for solving your problem
Hackers blow off questions that are inappropriately
targeted in order to try to protect their communications
channels from being drowned in irrelevance. You
don't want this to happen to you.
The first step, therefore, is to find the right
forum. Again, Google and other web-searching methods
are your friend. Use them to find the project
web page most closely associated with the hardware
or software that is giving you difficulties. Usually
it will have links to a FAQ (Frequently Asked
Questions) list, and to project mailing lists
and their archives. These mailing lists are the
final places to go for help, if your own efforts
(including reading
those FAQs you found) do not find you a solution.
But shooting off an email to a person or forum
which you are not familiar with is risky at best.
For example, do not assume that the author of
an informative web page wants to be your free
consultant. Do not make optimistic guesses about
whether your question will be welcome if you
are unsure, send it elsewhere, or refrain from
sending it at all.
When selecting a Web forum, newsgroup or mailing
list, don't trust the name by itself too far;
look for a FAQ or charter to verify that your
question is on-topic. Read some of the back traffic
before posting so you'll get a feel for how things
are done there. In fact, it's a very good idea
to do a keyword search for words relating to your
problem on the newsgroup or mailing list archives
before you post. It may find you an answer, and
if not it will help you formulate a better question.
Know what your topic is! One of the classic mistakes
is asking questions about the Unix or Windows
programming interface in a forum devoted to a
language or library or tool that is portable across
both. If you don't understand why this is a blunder,
you'd be best off not asking any questions at
all until you get it.
In general, questions to a well-selected public
forum are more likely to get useful answers than
equivalent questions to a private one. There are
multiple reasons for this. One is simply the size
of the pool of potential respondents. Another
is the size of the audience; hackers would rather
answer questions that educate a lot of people
than questions which only serve a few.
Understandably, skilled hackers and authors of
popular software are already receiving more than
their fair share of mistargeted messages. By adding
to the flood, you could in extreme cases even
be the straw which breaks the camel's back quite
a few times, contributors to popular projects
have withdrawn their support because the collateral
damage in the form of useless email traffic to
their personal accounts became unbearable.
Web
and IRC forums directed towards newbies
often give the quickest response
Your local user group, or your Linux distribution,
may advertise a Web forum or IRC channel where
newbies can get help. (In non-English-speaking
countries newbie forums are still more likely
to be mailing lists.) These are good first places,
to ask, especially if you think you may have tripped
over a relatively simple or common problem. An
advertised IRC channel is an open invitation to
ask questions there and often get answers in real
time.
In fact, if you got the program that is giving
you problems from a distro (as common today),
it may be better to ask in the distro forum/list
before trying the program's project forum/list.
The project's hackers may just say, “use
our build”.
Before posting to any Web forum, check if it
has a Search feature. And if it does, try a couple
of keyword searches for something like your problem;
it just might help. If you did a general Web search
before (as you should have), search the forum
anyway; your web-wide search engine might not
have all of this forum indexed recently.
There is an increasing tendency for projects
to do user support over a Web forum or IRC channel,
with email more reserved for development traffic.
So look for those channels first when seeking
project-specific help.
As
a second step, use project mailing lists
When a project has a development mailing list,
write to the mailing list, not to individual developers,
even if you believe that you know who can answer
your question best. Check the documentation of
the project and its homepage for the address of
a project mailing list, and use it. There are
several good reasons for this policy:
-
Any question that's good enough to be asked
of one developer will also be of value to
the whole group. Contrariwise, if you suspect
that your question is too dumb for a mailing
list, it's not an excuse to harass individual
developers.
-
Asking questions on the list distributes
load between developers. The individual
developer (especially if he's the project
leader) may be too busy to answer your questions.
-
Most mailing lists are archived and the
archives are indexed by search engines.
Somebody could find your question and the
answer on the web instead of asking it again
in the list.
-
If certain questions are seen to be asked
often, the developers can use that information
to improve the documentation or the software
itself to be less confusing. But if those
questions are asked in private, nobody has
the complete picture of what questions are
asked most often.
If a project has both a “user”
and a “developer” (or
“hacker”) mailing list
or Web forum, and you are not hacking on the code,
ask in the “user” list/forum.
Do not assume that you will be welcome on the
developer list, where they are likely to experience
your question as noise disrupting their developer
traffic.
However, if you are sure
your question is non-trivial, and you get no answer
in the “user” list/forum
for several days, try the “developer”
one. You would be well advised to lurk there for
a few days before posting to learn the local folkways
(actually this is good advice on any private or
semi-private list).
If you cannot find a project's mailing list address,
but only see the address of the maintainer of
the project, go ahead and write to the maintainer.
But even in that case, don't assume that the mailing
list doesn't exist. State in your e-mail that
you tried and could not find the appropriate mailing
list. Also mention that you don't object to having
your message forwarded to other people. (Many
people believe that private e-mail should remain
private, even if there is nothing secret in it.
By allowing your message to be forwarded you give
your correspondent a choice about how to handle
your e-mail.)
Use
meaningful, specific subject headers
On mailing lists, newsgroups or Web forums, the
subject header is your golden opportunity to attract
qualified experts' attention in around 50 characters
or fewer. Don't waste it on babble like “Please
help me” (let alone “PLEASE
HELP ME!!!!”; messages with subjects like
that get discarded by reflex). Don't try to impress
us with the depth of your anguish; use the space
for a super-concise problem description instead.
A good convention for subject headers, used by
many tech support organizations, is “object
- deviation”. The “object”
part specifies what thing or group of things is
having a problem, and the “deviation”
part describes the deviation from expected behavior.
- Stupid:
-
HELP! Video doesn't work properly on my
laptop!
- Smart:
-
XFree86 4.1 misshapen mouse cursor, Fooware
MV1005 vid. chipset
- Smarter:
-
XFree86 4.1 mouse cursor on Fooware MV1005
vid. chipset - is misshapen
The process of writing an “object-deviation”
description will help you organize your thinking
about the problem in more detail. What is affected?
Just the mouse cursor or other graphics too? Is
this specific to XFree86? To version 4.1? Is this
specific to Fooware video chipsets? To model MV1005?
A hacker who sees the result can immediately understand
what it is that you are having a problem with
and the
problem you are having, at a glance.
More generally, imagine looking at the index
of an archive of questions, with just the subject
lines showing. Make your subject line reflect
your question well enough that the next guy searching
the archive with a question similar to yours will
be able to follow the thread to an answer rather
than posting the question again.
If you ask a question in a reply, be sure to
change the subject line to indicate that you are
asking a question. A Subject line that looks like
“Re: test” or “Re:
new bug” is less likely to attract useful
amounts of attention. Also, pare quotes of previous
messages to the minimum consistent with cluing
in new readers.
Do not simply hit reply to a list message in
order to start an entirely new thread. This will
limit your audience. Some mail readers, like mutt,
allow the user to sort by thread and then hide
messages in a thread by folding the thread. Folks
who do that will never see your message.
Changing the subject is not sufficient. Mutt,
and probably other mail readers, looks at other
information in the email's headers to assign it
to a thread, not the subject line. Instead start
an entirely new email.
On Web forums the rules of good practice are
slightly different, because messages are usually
much more tightly bound to specfic discussion
threads and often invisible outside those threads.
Changing the subject when asking a question in
reply is not essential (not all forums even allow
separate subject lines on replies, and nearly
nobody reads them when they do). But asking a
question in a reply is a dubious practice in itself,
because it will only be seen by those who are
watching this thread. So, unless you are sure
you want
to ask the people currently active in the thread,
start a new one.
Finishing your query with “Please
send your reply to... ” makes it quite
unlikely you will get an answer. If you can't
be bothered to take even the few seconds required
to set up a correct Reply-To header in your mail
agent, we can't be bothered to take even a few
seconds to think about your problem. If your mail
program doesn't permit this, get a better mail
program. If your operating system doesn't support
any mail programs that permit this, get a better
operating system.
In Web forums, asking for a reply by email is
outright rude, unless you believe the information
may be sensitive (and somebody will, for some
unknown reason, let you but not the whole forum
know it). If you want to get an email when somebody
replies in the thread, request that the Web forum
send it; this feature is supported almost everywhere
under options like “watch
this thread”, “send
email on answers”, etc.)
Write
in clear, grammatical, correctly-spelled
language
We've found by experience that people who are
careless and sloppy writers are usually also careless
and sloppy at thinking and coding (often enough
to bet on, anyway). Answering questions for careless
and sloppy thinkers is not rewarding; we'd rather
spend our time elsewhere.
So expressing your question clearly and well
is important. If you can't be bothered to do that,
we can't be bothered to pay attention. Spend the
extra effort to polish your language. It doesn't
have to be stiff or formal in fact, hacker culture
values informal, slangy and humorous language
used with precision. But it has to be
precise; there has to be some indication that
you're thinking and paying attention.
Spell, punctuate, and capitalize correctly. Don't
confuse “its” with
“it's”, “loose”
with “lose”, or “discrete”
with “discreet”. Don't
TYPE IN ALL CAPS, this is read as shouting and
considered rude. (All-smalls is only slightly
less annoying, as it's difficult to read. Alan
Cox can get away with it, but you can't.)
More generally, if you write like a semi-literate
boob you will very likely be ignored. Writing
like a l33t script kiddie hax0r is the absolute
kiss of death and guarantees you will receive
nothing but stony silence (or, at best, a heaping
helping of scorn and sarcasm) in return.
If you are asking questions in a forum that does
not use your native language, you will get a limited
amount of slack for spelling and grammar errors
but no extra slack at all for laziness (and
yes, we can usually spot that difference). Also,
unless you know what your respondent's languages
are, write in English. Busy hackers tend to simply
flush questions in languages they don't understand,
and English is the working language of the Internet.
By writing in English you minimize your chances
that your question will be discarded unread.
Send
questions in formats that are easy to understand
If you make your question artificially hard to
read, it is more likely to be passed over in favor
of one that isn't. So:
-
Send plain text mail, not HTML. (It's not
hard to turn
off HTML.)
-
MIME attachments are usually OK, but only
if they are real content (such as an attached
source file or patch), and not merely boilerplate
generated by your mail client (such as another
copy of your message).
-
Don't send mail in which entire paragraphs
are single multiply-wrapped lines. (This
makes it too difficult to reply to just
part of the message.) Assume that your respondents
will be reading mail on 80-character-wide
text displays and set your line wrap accordingly,
to something less than 80.
-
However, do not
wrap data (such as log file dumps or session
transcripts) at any fixed column width.
Data should be included as-is, so respondents
can have confidence that they are seeing
what you saw.
-
Don't send MIME Quoted-Printable encoding
to an English-language forum. This encoding
can be necessary when you're posting in
a language ASCII doesn't cover, but a lot
of mail agents don't support it. When they
break, all those =20 glyphs scattered through
the text are ugly and distracting.
-
Never, ever
expect hackers to be able to read closed
proprietary document formats like Microsoft
Word or Excel. Most hackers react to these
about as well as you would to having a pile
of steaming pig manure dumped on your doorstep.
Even when they can cope, they resent having
to do so.
-
If you're sending mail from a Windows machine,
turn off Microsoft's stupid “Smart
Quotes” feature. This is so you'll
avoid sprinkling garbage characters through
your mail.
-
In Web forums, do not abuse “smiley”
and “html” features
(when they are present). A smiley or two
is usually OK, but colored fancy text tends
to make people think you are lame. Seriously
overusing smileys and color and fonts will
make you come off like a giggly teenage
girl, which is not generally a good idea
unless you are more interested in sex than
answers.
If you're using a graphical-user-interface mail
client, (such as Netscape Messenger, MS Outlook,
or their ilk) beware that it may violate these
rules when used with its default settings. Most
such clients have a menu-based “View
Source” command. Use this on something
in your sent-mail folder to check that you are
sending plain text without unnecessary attached
crud.
Be
precise and informative about your problem
-
Describe the symptoms of your problem
or bug carefully and clearly.
-
Describe the environment in which it occurs
(machine, OS, application, whatever). Provide
your vendor's distribution and release level
(e.g.: “Fedora Core
1”, “Slackware
9.1”, etc.).
-
Describe the research you did to try and
understand the problem before you asked
the question.
-
Describe the diagnostic steps you took
to try and pin down the problem yourself
before you asked the question.
-
Describe any recent changes in your computer
or software configuration that might be
relevant.
Do the best you can to anticipate the questions
a hacker will ask, and to answer them in advance
in your request for help.
Simon Tatham has written an excellent essay entitled
How
to Report Bugs Effectively. I strongly recommend
that you read it.
You need to be precise and informative. This
end is not served by simply dumping huge volumes
of code or data into a help request. If you have
a large, complicated test case that is breaking
a program, try to trim it and make it as small
as possible.
This is useful for at least three reasons. One:
being seen to invest effort in simplifying the
question makes it more likely that you'll get
an answer, Two: simplifying the question makes
it more likely you'll get a useful
answer. Three: In the process of refining your
bug report, you may develop a fix or workaround
yourself.
Don't
claim that you have found a bug
When you are having problems with a piece of
software, don't claim you have found a bug unless
you are very, very
sure of your ground. Hint: unless you can provide
a source-code patch that fixes the problem, or
a regression test against a previous version that
demonstrates incorrect behavior, you are probably
not sure enough.
Remember, there are a lot of other users that
are not experiencing your problem. Otherwise you
would have learned about it while reading the
documentation and searching the Web (you did do
that before complaining, didn't
you?). This means that very probably it is
you who are doing something wrong, not the software.
The people who wrote the software work very hard
to make it work as well as possible. If you claim
you have found a bug, you'll be implying that
they did something wrong, and you will almost
always offend them even when you are correct.
It's especially undiplomatic to yell “bug”
in the Subject line.
When asking your question, it is best to write
as though you assume you
are doing something wrong, even if you are privately
pretty sure you have found an actual bug. If there
really is a bug, you will hear about it in the
answer. Play it so the maintainers will want to
apologize to you if the bug is real, rather than
so that you will owe them an apology if you have
messed up.
Grovelling
is not a substitute for doing your homework
Some people who get that they shouldn't behave
rudely or arrogantly, demanding an answer, retreat
to the opposite extreme of grovelling. “I
know I'm just a pathetic newbie loser, but...”.
This is distracting and unhelpful. It's especially
annoying when it's coupled with vagueness about
the actual problem.
Don't waste your time, or ours, on crude primate
politics. Instead, present the background facts
and your question as clearly as you can. That
is a better way to position yourself than by grovelling.
Sometimes Web forums have separate places for
newbie questions. If you feel you do have a newbie
question, just go there. But don't grovel there
either.
Describe
the problem's symptoms, not your guesses
It's not useful to tell hackers what you think
is causing your problem. (If your diagnostic theories
were such hot stuff, would you be consulting others
for help?) So, make sure you're telling them the
raw symptoms of what goes wrong, rather than your
interpretations and theories. Let them do the
interpretation and diagnosis. If you feel it's
important to state your guess, clearly label it
as such and describe why that answer isn't working
for you.
- Stupid:
-
I'm getting back-to-back SIG11 errors on
kernel compiles, and suspect a hairline
crack on one of the motherboard traces.
What's the best way to check for those?
- Smart:
-
My home-built K6/233 on an FIC-PA2007 motherboard
(VIA Apollo VP2 chipset) with 256MB Corsair
PC133 SDRAM starts getting frequent SIG11
errors about 20 minutes after power-on during
the course of kernel compiles, but never
in the first 20 minutes. Rebooting doesn't
restart the clock, but powering down overnight
does. Swapping out all RAM didn't help.
The relevant part of a typical compile session
log follows.
Describe
your problem's symptoms in chronological
order
The most useful clues in figuring out something
that went wrong often lie in the events immediately
prior. So, your account should describe precisely
what you did, and what the machine did, leading
up to the blowup. In the case of command-line
processes, having a session log (e.g., using the
script utility) and quoting the relevant twenty
or so lines is very useful.
If the program that blew up on you has diagnostic
options (such as -v for verbose), try to think
carefully about selecting options that will add
useful debugging information to the transcript.
If your account ends up being long (more than
about four paragraphs), it might be useful to
succinctly state the problem up top, then follow
with the chronological tale. That way, hackers
will know what to watch for in reading your account.
Describe
the goal, not the step
If you are trying to find out how to do something
(as opposed to reporting a bug), begin by describing
the goal. Only then describe the particular step
towards it that you are blocked on.
Often, people who need technical help have a
high-level goal in mind and get stuck on what
they think is one particular path towards the
goal. They come for help with the step, but don't
realize that the path is wrong. It can take a
lot of effort to get past this.
- Stupid:
-
How do I get the color-picker on the FooDraw
program to take a hexadecimal RGB value?
- Smart:
-
I'm trying to replace the color table on
an image with values of my choosing. Right
now the only way I can see to do this is
by editing each table slot, but I can't
get FooDraw's color picker to take a hexadecimal
RGB value.
The second version of the question is smart.
It allows an answer that suggests a tool better
suited to the task.
Don't
ask people to reply by private email
Hackers believe solving problems should be a
public, transparent process during which a first
try at an answer can and should be corrected if
someone more knowledgeable notices that it is
incomplete or incorrect. Also, they get some of
their reward for being respondents from being
seen to be competent and knowledgeable by their
peers.
When you ask for a private reply, you are disrupting
both the process and the reward. Don't do this.
It's the respondent's
choice whether to reply privately and if he
does, it's usually because he thinks the question
is too ill-formed or obvious to be interesting
to others.
There is one limited exception to this rule.
If you think the question is such that you are
likely to get a lot of answers that are all pretty
similar, then the magic words are “email
me and I'll summarize the answers for the group”.
It is courteous to try and save the mailing list
or newsgroup a flood of substantially identical
postings but you have to keep the promise to
summarize.
Be
explicit about the question you have
Open-ended questions tend to be perceived as
open-ended time sinks. The people most likely
to be able to give you a useful answer are also
the busiest people (if only because they take
on the most work themselves). People like that
are allergic to open-ended time sinks, thus they
tend to be allergic to open-ended questions.
You are more likely to get a useful response
if you are explicit about what you want respondents
to do (provide pointers, send code, check your
patch, whatever). This will focus their effort
and implicitly put an upper bound on the time
and energy a respondent has to put in to helping
you. This is good.
To understand the world the experts live in,
think of expertise as an abundant resource and
time to respond as a scarce one. The less of a
time commitment you implicitly ask for, the more
likely you are to get an answer from someone really
good and really busy.
So it is useful to frame your question to minimize
the time commitment required for an expert to
field it but this is often not the same thing
as simplifying the question. Thus, for example,
“Would you give me a pointer
to a good explanation of X?” is usually
a smarter question than “Would
you explain X, please?”. If you have some
code that isn't working, it is usually smarter
to ask for someone to explain what's wrong with
it than it is to ask someone to fix it.
Don't
post homework questions
Hackers are good at spotting homework questions;
most of us have done them ourselves. Those questions
are for you
to work out, so that you will learn from the experience.
It is OK to ask for hints, but not for entire
solutions.
If you suspect you have been passed a homework
question, but can't solve it anyway, try asking
in a user group forum or (as a last resort) in
a “user” list/forum
of a project. While the hackers will
spot it, some of the advanced users may at least
give you a hint.
Resist the temptation to close your request for
help with semantically-null questions like “Can
anyone help me?” or “Is
there an answer?” First: if you've written
your problem description halfway competently,
such tacked-on questions are at best superfluous.
Second: because they are superfluous, hackers
find them annoying and are likely to return
logically impeccable but dismissive answers like
“Yes, you can be helped”
and “No, there is no help
for you.”
In general, asking yes-or-no questions is a good
thing to avoid unless you want a yes-or-no
answer.
Don't
flag your question as “Urgent”,
even if it is for you
That's your problem, not ours. Claiming urgency
is very likely to be counter-productive: most
hackers will simply delete such messages as rude
and selfish attempts to elicit immediate and special
attention.
There is one semi-exception. It can be worth
mentioning if you're using the program in some
high-profile place, one that the hackers will
get excited about; in such a case, if you're under
time pressure, and you say so politely, people
may get interested enough to answer faster.
This is a very risky thing to do, however, because
the hackers' metric for what is exciting probably
differ from yours. Posting from the International
Space Station would qualify, for example, but
posting on behalf of a feel-good charitable or
political cause would almost certainly not. In
fact, posting “Urgent: Help
me save the fuzzy baby seals!” will reliably
get you shunned or flamed even by hackers who
think fuzzy baby seals are important.
If you find this mysterious, re-read the rest
of this how-to repeatedly until you understand
it before posting anything at all.
Courtesy
never hurts, and sometimes helps
Be courteous. Use “Please”
and “Thanks for your attention”
or “Thanks for your consideration”.
Make it clear that you appreciate the time people
spend helping you for free.
To be honest, this isn't as important as (and
cannot substitute for) being grammatical, clear,
precise and descriptive, avoiding proprietary
formats etc.; hackers in general would rather
get somewhat brusque but technically sharp bug
reports than polite vagueness. (If this puzzles
you, remember that we value a question by what
it teaches us.)
However, if you've got your technical ducks in
a row, politeness does increase your chances of
getting a useful answer.
(We must note that the only serious objection
we have received from veteran hackers to this
HOWTO is with respect to our previous recommendation
to use “Thanks in advance”.
Some hackers feel this connotes an intention not
to thank anybody afterwards. Our recommendation
is to either say “Thanks in
advance” first and
thank respondents afterwards, or express courtesy
in a different way, such as by saying “Thanks
for your attention” or “Thanks
for your consideration”.)
Follow
up with a brief note on the solution
Send a note after the problem has been solved
to all who helped you; let them know how it came
out and thank them again for their help. If the
problem attracted general interest in a mailing
list or newsgroup, it's appropriate to post the
followup there.
Optimally, the reply should be to the thread
started by the original question posting, and
should have FIXED, RESOLVED or an equally
obvious tag in the subject line. On mailing lists
with fast turnaround, a potential respondent who
sees a thread about “Problem
X” ending with “Problem
X - FIXED” knows not to waste his/her time
even reading the thread (unless (s)he) personally
finds Problem X interesting) and can therefore
use that time solving a different problem.
Your followup doesn't have to be long and involved;
a simple “Howdy it was a
failed network cable! Thanks, everyone. - Bill”
would be better than nothing. In fact, a short
and sweet summary is better than a long dissertation
unless the solution has real technical depth.
Say what action solved the problem, but you need
not replay the whole troubleshooting sequence.
For problems with some depth, it is appropriate
to post a summary of the troubleshooting history.
Describe your final problem statement. Describe
what worked as a solution, and indicate avoidable
blind alleys after
that. The blind alleys should come
after the correct solution and other summary material,
rather than turning the follow-up into a detective
story. Name the names of people who helped you;
you'll make friends that way.
Besides being courteous and informative, this
sort of followup will help others searching the
archive of the mailing-list/newsgroup/forum to
know exactly which solution helped you and thus
may also help them.
Last, and not least, this sort of followup helps
everybody who assisted feel a satisfying sense
of closure about the problem. If you are not a
techie or hacker yourself, trust us that this
feeling is very important to the gurus and experts
you tapped for help. Problem narratives that trail
off into unresolved nothingness are frustrating
things; hackers itch to see them resolved. The
good karma that scratching that itch earns you
will be very, very helpful to you next time you
need to pose a question.
Consider how you might be able to prevent others
from having the same problem in the future. Ask
yourself if a documentation or FAQ patch would
help, and if the answer is yes send that patch
to the maintainer.
Among hackers, this sort of behavior is actually
more important than conventional politeness. It's
how you get a reputation for playing well with
others, which can be a very valuable asset.
RTFM and
STFW: How To Tell You've Seriously Screwed
Up
There is an ancient and hallowed tradition: if
you get a reply that reads “RTFM”,
the person who sent it thinks you should have
Read The Fucking Manual. He is almost certainly
right. Go read it.
RTFM has a younger relative. If you get a reply
that reads “STFW”,
the person who sent it thinks you should have
Searched The Fucking Web. He is almost certainly
right. Go search it.
In Web forums, you may also be told to search
the forum archives. In fact, someone may even
be so kind as to provide a pointer to the previous
thread where this problem was solved. But do not
rely on this consideration; do your archive-searching
before asking.
Often, the person telling you to do a search
has the manual or the web page with the information
you need open, and is looking at it as he types.
These replies mean that he thinks (a) the information
you need is easy to find, and (b) you will learn
more if you seek out the information than if you
have it spoon-fed to you.
You shouldn't be offended by this; by hacker
standards, he is showing you a rough kind of respect
simply by not ignoring you. You should instead
thank him for his grandmotherly kindness.
If you
don't understand...
If you don't understand the answer, do not immediately
bounce back a demand for clarification. Use the
same tools that you used to try and answer your
original question (manuals, FAQs, the Web, skilled
friends) to understand the answer. Then, if you
still need to ask for clarification, exhibit what
you have learned.
For example, suppose I tell you: “It
sounds like you've got a stuck zentry; you'll
need to clear it.” Then here's a bad
followup question: “What's
a zentry?” And here's a good
followup question: “OK, I
read the man page and zentries are only mentioned
under the -z and -p switches. Neither of them
says anything about clearing zentries. Is it one
of these or am I missing something here?”
Much of what looks like rudeness in hacker circles
is not intended to give offence. Rather, it's
the product of the direct, cut-through-the-bullshit
communications style that is natural to people
who are more concerned about solving problems
than making others feel warm and fuzzy.
When you perceive rudeness, try to react calmly.
If someone is really acting out, it is very likely
that a senior person on the list or newsgroup
or forum will call him or her on it. If that doesn't
happen and you lose your temper, it is likely
that the person you lose it at was behaving within
the hacker community's norms and you
will be considered at fault. This will hurt your
chances of getting the information or help you
want.
On the other hand, you will occasionally run
across rudeness and posturing that is quite gratuitous.
The flip-side of the above is that it is acceptable
form to slam real offenders quite hard, dissecting
their misbehavior with a sharp verbal scalpel.
Be very, very sure of your ground before you try
this, however. The line between correcting an
incivility and starting a pointless flamewar is
thin enough that hackers themselves not infrequently
blunder across it; if you are a newbie or an outsider,
your chances of avoiding such a blunder are low.
If you're after information rather than entertainment,
it's better to keep your fingers off the keyboard
than to risk this.
(Some people assert that many hackers have a
mild form of autism or Asperger's Syndrome, and
are actually missing some of the brain circuitry
that lubricates `normal' human social interaction.
This may or may not be true. If you are not a
hacker yourself, it may help you cope with our
eccentricities if you think of us as being brain-damaged.
Go right ahead. We won't care; we like
being whatever it is we are, and generally have
a healthy skepticism about clinical labels.)
In the next section, we'll talk about a different
issue; the kind of `rudeness' you'll see when
you misbehave.
On
Not Reacting Like A Loser
Odds are you'll screw up a few times on hacker
community forums in ways detailed in this article,
or similar. And you'll be told exactly how you screwed
up, possibly with colourful asides. In public.
When this happens, the worst thing you can do is
whine about the experience, claim to have been verbally
assaulted, demand apologies, scream, hold your breath,
threaten lawsuits, complain to people's employers,
leave the toilet seat up, etc. Instead, here's what
you do:
Get over it. It's normal. In fact, it's healthy
and appropriate.
Community standards do not maintain themselves:
They're maintained by people actively applying them,
visibly, in public.
Don't whine that all criticism should have been
conveyed via private mail: That's not how it works.
Nor is it useful to insist you've been personally
insulted when someone comments that one of your
claims was wrong, or that his views differ. Those
are loser attitudes.
There have been hacker forums where, out of some
misguided sense of hyper-courtesy, participants
are banned from posting any fault-finding with another's
posts, and told “Don't say anything
if you're unwilling to help the user.” The
resulting departure of clueful participants to elsewhere
causes them to descend into meaningless babble and
become useless as technical forums.
Exaggeratedly “friendly”
(in that fashion) or useful: Pick one.
Remember: When that hacker tells you that you've
screwed up, and (no matter how gruffly) tells you
not to do it again, he's acting out of concern for
(1) you and (2) his community. It would be much
easier for him to ignore you and filter you out
of his life. If you can't manage to be grateful,
at least have a little dignity, don't whine, and
don't expect to be treated like a fragile doll just
because you're a newcomer with a theatrically hypersensitive
soul and delusions of entitlement.
Sometimes people will attack you personally, flame
without an apparent reason, etc., even if you don't
screw up (or have only screwed up in their imagination).
In this case, complaining is the way to really
screw up.
These flamers are either lamers who don't have
a clue but believe themselves to be experts, or
would-be psychologists testing whether you'll screw
up. The other readers either ignore them, or find
ways to deal with them on their own. The flamers'
behavior creates problems for themselves, which
don't have to concern you.
Don't let yourself be drawn into a flamewar, either.
Most flames are best ignored after you've checked
whether they are really flames, not pointers to
the ways in which you have screwed up, and not cleverly
ciphered answers to your real question (this happens
as well).
Here are some classic stupid questions, and what
hackers are thinking when they don't answer them.
- Q: Where can I find program
or resource X?
- Q: How can I use X to
do Y?
- Q: How can I configure
my shell prompt?
- Q: Can I convert an AcmeCorp
document into a TeX file using the Bass-o-matic
file converter?
- Q: My {program, configuration,
SQL statement} doesn't work
- Q: I'm having problems
with my Windows machine. Can you help?
- Q: My program doesn't
work. I think system facility X is broken.
- Q: I'm having problems
installing Linux or X. Can you help?
- Q: How can I crack root/steal
channel-ops privileges/read someone's email?
| Q: |
Where can
I find program or resource X? |
| A: |
The same
place I'd find it, fool at the other
end of a web search. Ghod, doesn't everybody
know how to use Google
yet? |
| Q: |
How can I
use X to do Y? |
| A: |
If what you
want is to do Y, you should ask that question
without pre-supposing the use of a method
that may not be appropriate. Questions
of this form often indicate a person who
is not merely ignorant about X, but confused
about what problem Y they are solving
and too fixated on the details of their
particular situation. It is generally
best to ignore such people until they
define their problem better. |
| Q: |
How can I
configure my shell prompt? |
| A: |
If you're
smart enough to ask this question, you're
smart enough to RTFM
and find out yourself. |
| Q: |
Can I convert
an AcmeCorp document into a TeX file using
the Bass-o-matic file converter? |
| A: |
Try it and
see. If you did that, you'd (a) learn
the answer, and (b) stop wasting my time. |
| Q: |
My {program,
configuration, SQL statement} doesn't
work |
| A: |
This is not
a question, and I'm not interested in
playing Twenty Questions to pry your actual
question out of you I have better things
to do. On seeing something like this,
my reaction is normally of one of the
following:
-
do you have anything else to add
to that?
-
oh, that's too bad, I hope you
get it fixed.
-
and this has exactly what to do
with me?
|
| Q: |
I'm having
problems with my Windows machine. Can
you help? |
| A: |
Yes. Throw
out that Microsoft trash and install an
open-source operating system like Linux
or BSD.
Note: you can
ask questions related to Windows machines
if they are about a program that does
have an official Windows build, or interacts
with Windows machines (i.e. Samba). Just
don't be surprised by the reply that the
problem is with Windows and not the program,
because Windows is so broken in general
that this is very often the case. |
| Q: |
My program
doesn't work. I think system facility
X is broken. |
| A: |
While it
is possible that you are the first person
to notice an obvious deficiency in system
calls and libraries heavily used by hundreds
or thousands of people, it is rather more
likely that you are utterly clueless.
Extraordinary claims require extraordinary
evidence; when you make a claim like this
one, you must back it up with clear and
exhaustive documentation of the failure
case. |
| Q: |
I'm having
problems installing Linux or X. Can you
help? |
| A: |
No. I'd need
hands-on access to your machine to troubleshoot
this. Go ask your local Linux user group
for hands-on help. (You can find a list
of user groups here.)
Note: questions about installing Linux
may be appropriate if you're on a forum
or mailing list about a particular distro,
and the problem is with that
distro; or on local user groups forums.
In this case, be sure to describe the
exact details of the failure. But do careful
searching first, with "linux" and all
suspicious pieces of hardware. |
| Q: |
How can I
crack root/steal channel-ops privileges/read
someone's email? |
| A: |
You're a
| | | |