Skip to content

Getting Started First Contribution

Mathew Storm edited this page Sep 17, 2025 · 2 revisions

Your First Contribution

A practical guide to making your first contribution to EduLite.

Why Start Small

Starting with a simple contribution like fixing a typo:

  • Teaches the complete contribution workflow
  • Builds familiarity with Git and GitHub
  • Provides confidence for larger contributions
  • Makes an immediate positive impact on the project

Prerequisites

  1. GitHub account - Sign up free
  2. Git installed - Verify with git --version
  3. Text editor - Any editor will work (VS Code, Sublime, Notepad++)

Step-by-Step Guide

Step 1: Fork and Clone

Fork the Repository

  1. Navigate to github.com/ibrahim-sisar/EduLite
  2. Click "Fork" button (top right)
  3. Wait for GitHub to create your copy

Clone Your Fork

git clone https://github.com/YOUR_USERNAME/EduLite.git
cd EduLite

Add Upstream Remote

git remote add upstream https://github.com/ibrahim-sisar/EduLite.git

Step 2: Create a Branch

git checkout -b fix/your-description

Branch naming conventions:

  • fix/ - Bug fixes
  • feat/ - New features
  • docs/ - Documentation changes
  • refactor/ - Code restructuring

Step 3: Make Your Changes

  1. Open the file in your text editor
  2. Make the necessary changes
  3. Save the file

Example: Fixing a typo in README.md

# Before
EduLite is a lightweigt education platform

# After
EduLite is a lightweight education platform

Step 4: Commit Changes

# Check what changed
git status

# Stage changes
git add README.md

# Commit with descriptive message
git commit -m "fix: correct typo in README.md"

Commit message guidelines:

  • Start with type: fix:, feat:, docs:, etc.
  • Use present tense
  • Be specific and concise
  • Keep under 50 characters

Step 5: Push to GitHub

git push origin fix/your-description

Step 6: Create Pull Request

  1. Visit your fork on GitHub
  2. Click "Compare & pull request"
  3. Fill out the PR template

Pull Request Template

## Description
example: `Fixed typo: "lightweigt" → "lightweight" in project description.`

## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature
- [ ] Documentation update

## Testing
- [ ] Manually reviewed the change
- [ ] Spell-checked surrounding text

## Related Issues

What Happens Next

1. Automated Checks

GitHub Actions will run automated tests and checks on your PR.

2. Code Review

A maintainer will review your contribution. They may:

  • Approve and merge - Your contribution becomes part of EduLite
  • Request changes - Make the requested updates and push again
  • Ask questions - Provide clarification as needed

3. Making Updates

If changes are requested:

# Make changes locally
git add modified-file.py
git commit -m "fix: address review feedback"
git push origin fix/your-description

The PR automatically updates with your new commits.

Common Issues and Solutions

Permission Denied When Pushing

Ensure you're pushing to your fork, not the main repository:

git remote -v
# Should show: origin https://github.com/YOUR_USERNAME/EduLite.git

Branch Already Exists

Use a different branch name:

git checkout -b fix/your-description-v2

Merge Conflicts

Update your branch with the latest changes:

git checkout main
git pull upstream main
git checkout fix/your-description
git rebase main

Finding Contribution Opportunities

Good First Issues

  • Browse issues labeled "good first issue"
  • Check documentation for typos and clarity improvements
  • Look for missing or outdated documentation
  • Find untested code that needs test coverage

Search for Common Issues

# Find markdown files
find . -name "*.md" -type f

# Search for common typos
grep -r "teh " --include="*.md" .
grep -r "recieve" --include="*.md" .

Beyond Your First Contribution

Natural Progression

  1. Documentation - Fix typos, improve clarity, add examples
  2. Simple bugs - Fix issues with clear solutions
  3. Tests - Add test coverage for existing code
  4. Features - Implement small, well-defined features
  5. Complex features - Take on larger architectural changes

Essential Git Commands

# View changes
git status                    # Check current state
git diff                      # Show unstaged changes
git diff --staged            # Show staged changes

# Undo changes
git checkout -- filename     # Discard local changes
git reset --soft HEAD~1      # Undo last commit (keep changes)
git reset --hard HEAD~1      # Undo last commit (discard changes)

# Update from upstream
git fetch upstream           # Get latest changes
git merge upstream/main      # Merge into current branch
git rebase upstream/main     # Rebase onto latest

Code Quality for Backend

If contributing Python/Django code, set up pre-commit hooks:

# Install pre-commit
pip install pre-commit

# Install hooks
pre-commit install

This automatically formats code and runs checks before commits. See Backend Pre-commit Guide for details.

Getting Help

Where to Ask Questions

  • Pull Request comments - Ask directly in your PR
  • GitHub Issues - For issue-specific questions
  • Discord #help - Real-time assistance
  • GitHub Discussions - General questions

How to Ask Effectively

Include:

  1. What you're trying to do
  2. What you've already tried
  3. The exact error message (if any)
  4. Relevant code or configuration

Quick Reference

Contribution Workflow

# One-time setup
git clone https://github.com/YOUR_USERNAME/EduLite.git
cd EduLite
git remote add upstream https://github.com/ibrahim-sisar/EduLite.git

# For each contribution
git checkout main
git pull upstream main
git checkout -b type/description
# Make changes
git add .
git commit -m "type: description"
git push origin type/description
# Create PR on GitHub

Checklist for First PR

  • Fork repository
  • Clone locally
  • Create feature branch
  • Make changes
  • Write clear commit message
  • Push to fork
  • Create pull request
  • Respond to feedback
  • Celebrate when merged

Remember: Every contribution, regardless of size, improves EduLite for students worldwide. Start with something simple today.

This guide is maintained by the community. Found an issue? Submit a PR to improve it.

Clone this wiki locally