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

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.

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, 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 file in the repository root defines all required packages.


# 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 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:

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:

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.

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 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
  • Verify Jupyter runs lesson notebooks without errors
  • Review 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, 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, the official 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 becomes translations/es/lessons/1-Intro/README.md. The 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 for specific build commands and linting requirements.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →