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.
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, 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:
numpyandmatplotlibfor data manipulation and visualizationtorchfor PyTorch-based neural network lessonsopencvfor computer vision contentscikit-learnfor 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:
- Fork the repository to your account
- Create a feature branch (
git checkout -b fix-typo-lesson-3) - Commit changes with clear messages
- 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.mdif 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.mdfor 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/, andetc/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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →