# Prerequisites for Contributing to Microsoft/AI-For-Beginners: Complete Guide

> Learn the essential prerequisites for contributing to Microsoft AI For Beginners. Sign the CLA, set up your Python environment with Jupyter, and review the Code of Conduct.

- Repository: [Microsoft/AI-For-Beginners](https://github.com/microsoft/AI-For-Beginners)
- Tags: how-to-guide
- Published: 2026-08-01

---

**Contributing to the microsoft/AI-For-Beginners repository requires signing the Microsoft CLA, setting up a Python/Conda environment with Jupyter, and following the project's Code of Conduct.**

Getting started with open-source contributions to Microsoft's free AI curriculum involves both legal agreements and technical setup. This guide walks through every prerequisite based on the actual repository structure and contribution guidelines.

## Legal Prerequisites for Contributing

Before writing any code, you must satisfy Microsoft's legal requirements for open-source contributions.

### Microsoft Contributor License Agreement (CLA)

The **Microsoft Contributor License Agreement** is mandatory for all contributors. The **CLA-bot** automatically enforces this when you open your first pull request.

- You only need to sign the CLA **once** across all Microsoft open-source projects
- The bot will block PR merging until the agreement is completed
- No manual intervention from maintainers is required

As documented in [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md), the CLA covers patent rights and copyright for your submissions.

### Microsoft Open Source Code of Conduct

All interactions—issues, pull requests, and discussions—must comply with the **Microsoft Open Source Code of Conduct**. Violations can result in content removal or account restrictions.

## Technical Prerequisites

The curriculum is built around Jupyter notebooks and Python machine learning libraries. Here's what you need installed.

### Python Environment Setup

The repository uses **Conda** for dependency management. The [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) file in the repository root defines all required packages.

```bash

# Clone the repository

git clone https://github.com/microsoft/AI-For-Beginners.git
cd AI-For-Beginners

# Create and activate the Conda environment

conda env create -f environment.yml
conda activate ai-beginners

```

Core packages installed from [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) include:

- `numpy` and `matplotlib` for data manipulation and visualization
- `torch` for PyTorch-based neural network lessons
- `opencv` for computer vision content
- `scikit-learn` for traditional ML algorithms

### Jupyter Installation

**Jupyter Notebook** or **JupyterLab** is required to run and test lesson notebooks locally. Verify your installation:

```bash
jupyter --version
jupyter notebook  # or jupyter lab

```

### Optional: Node.js for Quiz App Contributions

If you plan to modify the Vue.js quiz application in `etc/quiz-app/`, you'll additionally need:

```bash
cd etc/quiz-app
npm install
npm run lint  # Verify code style before submitting

```

The quiz app follows standard Vue 2 conventions as specified in [`etc/quiz-app/README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/README.md).

## Repository Structure Knowledge

Understanding where content lives helps you target the right files for contributions.

| Directory | Purpose |
|-----------|---------|
| `lessons/` | Core curriculum notebooks and Markdown files |
| `translations/` | Language-specific versions (e.g., `translations/es/`) |
| `etc/quiz-app/` | Vue.js interactive quiz application |
| `etc/` | Additional assets and contributor guidance |

The README's **Content Table** section maps lesson numbers to specific folders, making it easy to locate files for edits.

## Git Workflow Requirements

Contributions follow standard GitHub fork-and-branch workflow:

1. **Fork** the repository to your account
2. **Create a feature branch** (`git checkout -b fix-typo-lesson-3`)
3. **Commit changes** with clear messages
4. **Push to your fork** and open a Pull Request

CI pipelines automatically validate PRs, and the CLA-bot verifies your legal status.

## Optional Contribution Paths

### Translation Contributions

To add a new language:

- Place translated notebooks under `translations/<lang-code>/` following the original English structure
- Update the language table in [`README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/README.md) if adding a new language
- The repository uses an automated translation bot, but manual translations are accepted

### Quiz App Contributions

For `etc/quiz-app/` changes, run `npm run lint` before committing to ensure Vue.js code style compliance.

## Quick Start Checklist

- [ ] Sign the Microsoft CLA (triggered automatically on first PR)
- [ ] Install Conda and create environment from [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml)
- [ ] Verify Jupyter runs lesson notebooks without errors
- [ ] Review [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md) for specific guidelines
- [ ] Fork repository and create feature branch
- [ ] Test changes locally before submitting PR

## Summary

- **Legal**: Microsoft CLA signature and Code of Conduct adherence are non-negotiable prerequisites
- **Environment**: Python 3 via Conda with packages defined in [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml), plus Jupyter for notebook execution
- **Structure**: Know the `lessons/`, `translations/`, and `etc/quiz-app/` directories to target contributions correctly
- **Workflow**: Standard Git fork-branch-PR process with automated CLA and CI checks
- **Optional paths**: Translation workflows require folder structure compliance; quiz app contributions need Node.js tooling

## Frequently Asked Questions

### What happens if I forget to sign the CLA before submitting a PR?

The **CLA-bot** will automatically comment on your pull request blocking merge until you complete the agreement. Once signed, the bot updates the PR status—no need to close and resubmit.

### Can I contribute without installing Conda?

While technically possible to use `pip` with [`requirements.txt`](https://github.com/microsoft/AI-For-Beginners/blob/main/requirements.txt), the official [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) in the repository root is the supported and tested method. Using alternative environments may lead to version conflicts with `torch` and `opencv`.

### How do I know if my translation follows the correct format?

Mirror the exact directory structure of `lessons/` within your `translations/<lang-code>/` folder. For example, [`lessons/1-Intro/README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) becomes [`translations/es/lessons/1-Intro/README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/translations/es/lessons/1-Intro/README.md). The [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md) file provides additional translation-specific guidance.

### Does the quiz app use Vue 2 or Vue 3?

The quiz application in `etc/quiz-app/` uses **Vue 2** conventions according to its README. Check [`etc/quiz-app/README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/README.md) for specific build commands and linting requirements.