First Contribution
Asking Questions

Asking Questions the Right Way

The way you ask questions determines whether you get help or get ignored.

Why Questions Matter

The Good Question Formula

Good Question = 
    Context + 
    What You Tried + 
    Specific Ask + 
    Minimal Reproducible Example

Before You Ask

The Research Checklist

Time investment: 15-30 minutes of research before asking.

What to Search

# In GitHub issues
is:issue "exact error message"
 
# In closed issues (often has solutions!)
is:issue is:closed "your problem"
 
# With your specific scenario
is:issue "feature name" + "your situation"

Bad vs Good Questions

❌ Bad Questions

Example 1: Too Vague

"It doesn't work. How to fix?"

Missing: What doesn't work? What error? What did you try?

Example 2: No Context

"I get an error when I run the app"

Missing: What error? Which command? What's your environment?

Example 3: Demanding

"Fix this ASAP. I need it for my project."

Problem: You're not entitled to their time.

Example 4: Already Answered

"How do I install this?"

When: The README has installation instructions.

✅ Good Questions

Example 1: Clear and Specific

Title: [Bug] Authentication fails with special characters in password

**Environment:**
- OS: Ubuntu 22.04
- Node: 18.17.0
- Package version: 2.3.1

**What I'm trying to do:**
Log in with a password containing # character

**What happens:**
Error: "Invalid credentials" even with correct password

**What I expected:**
Successful login

**Steps to reproduce:**
1. Create account with password: Test#123
2. Try to log in
3. Get error on valid credentials

**What I've tried:**
- URL encoding the password
- Using different special characters
- Checked issue #234 (different problem)

**Relevant code:**
```javascript
const response = await auth.login(email, password);

Error log:

Error: AUTH_FAILED at line 45

**Example 2: Question About Approach**

Title: Best approach for implementing feature X?

I'm working on issue #456 and have two ideas:

Option A: Modify existing UserService

  • Pros: Reuses existing code
  • Cons: Might affect other features

Option B: Create new dedicated service

  • Pros: Isolated changes
  • Cons: Some code duplication

I'm leaning toward Option A because [reason].

Does this align with the project's architecture? Any guidance on the preferred approach?


## The Question Template

```markdown
## Summary
[One sentence describing your question/problem]

## Context
- What I'm trying to do: [goal]
- What I've read: [docs, issues checked]
- Related to issue: #[number]

## Environment (if applicable)
- OS: 
- Language/Runtime version:
- Package version:

## What I've Tried
1. [First attempt]
2. [Second attempt]
3. [Third attempt]

## Specific Question
[Your actual question]

## Additional Context
[Screenshots, error logs, code snippets]

Where to Ask

Question Type → Channel

Question TypeBest Channel
Bug reportGitHub Issues
Feature requestGitHub Issues/Discussions
Usage questionDiscord/Slack/Discussions
PR-specificPR comments
ArchitectureGitHub Discussions
Quick clarificationDiscord/Slack

Timing Your Questions

Tips for Timing

  • Weekdays > Weekends for business-backed projects
  • Check maintainer timezones from their profile
  • Batch your questions instead of asking one by one
  • Be patient - 24-48 hours is normal response time

Following Up

✅ Good Follow-ups

After 3 days:
"Hi, just following up on this. Is there any additional 
context I can provide? Happy to help troubleshoot."

After resolution:
"Thanks for the help! The issue was [X]. I'm updating 
the docs to help others who hit this."

❌ Bad Follow-ups

After 1 hour:
"Hello???"

After 1 day:
"Why isn't anyone responding? This is urgent!"

Multiple messages:
"bump"
"anyone?"
"hello?"

Question Etiquette

DO:

  • ✅ Research before asking
  • ✅ Be specific and provide context
  • ✅ Show what you've tried
  • ✅ Be patient and respectful
  • ✅ Thank helpers
  • ✅ Share your solution for others

DON'T:

  • ❌ Demand immediate answers
  • ❌ Ask the same question in multiple channels
  • ❌ Get defensive when corrected
  • ❌ Ghost after getting help
  • ❌ Ask in DMs without permission
  • ❌ Expect maintainers to do your work

When You Get an Answer

If It Solves Your Problem

"Thanks @maintainer! That solved it. For anyone else hitting 
this, the issue was [X] and the fix is [Y]."

If It Partially Helps

"Thanks for the pointer! I tried [their suggestion] and got 
further, but now I'm seeing [new issue]. Should I open a 
separate issue for this?"

If You Disagree

"Thanks for the explanation. I see your point about [X]. 
I was thinking [alternative approach] because [reason]. 
Would that also be acceptable, or is there a reason to 
prefer your suggested approach?"

Building Relationships Through Questions

Good questions can build your reputation:

Special Scenarios

Asking for Mentorship

Subject: Request for guidance on first contribution

Hi @maintainer,

I'm new to open source and excited to contribute to [Project].
I've been following the repo for [time] and have:
- Set up my local environment
- Read through CONTRIBUTING.md
- Looked at issues #X, #Y, #Z

Would it be okay if I asked occasional questions while 
working on my first contribution? I'll do my research 
first and keep questions specific.

Thanks for maintaining this awesome project!

Asking About Issue Scope

Hi, I'm interested in working on this issue.

Before I start, I want to make sure I understand the scope:

1. Should the solution also handle [edge case]?
2. Do you want tests included in the same PR?
3. Any specific approach you'd prefer?

Happy to discuss and provide a small proposal before coding.

Asking When Stuck

I've been working on issue #123 and hit a wall.

**What I'm trying to do:**
[Specific goal]

**Where I'm stuck:**
I can't figure out how [specific component] connects to 
[other component]. Looking at [file], I see [observation], 
but I'm not sure if [uncertainty].

**What I've tried:**
- Followed the flow from [entry point]
- Added logs at [locations]
- Read [related docs/code]

Any pointers on how these pieces fit together?

Quick Reference: Question Quality Checklist

Before posting, verify:

  • Searched existing issues/discussions
  • Read relevant documentation
  • Included environment details
  • Showed what I tried
  • Made a specific ask
  • Provided reproducible example
  • Used appropriate channel
  • Proofread for clarity

Next Steps

Now that you know how to ask questions:

➡️ Claiming an Issue →


Remember: Every great contributor started by asking questions. The quality of your questions shows the quality of your thinking. Make them count.