# # Application Guide

Before starting, please read the Ideas page and choose a project you are interested in. Set up a C11 compiler, clone pocketpy sources from github and try to build. This helps you confirm that your skills and experience match the requirements of the project.

### # Build guide for beginners

First, you need to install these tools:

1. Python(>= 3.8), I am sure you already have it.
2. A C11 compiler, such as GCC, Clang or MSVC. If you are on Linux, `gcc` is already installed. If you are on Windows, you can install Visual Studio with C/C++ development tools.
3. CMake(>= 3.10), a cross-platform build tool. You can use `pip install cmake` to install it.

Then, clone pocketpy sources from github and try to build:

    git clone https://github.com/pocketpy/pocketpy
    cd pocketpy

    python cmake_build.py

If everything goes well, you will get a `main` executable (`main.exe` on Windows) in the root directory of pocketpy. Simply run it and you will enter pocketpy's REPL.

    pocketpy 2.0.5 (Jan 17 2025, 14:36:15) [64 bit] on darwin
    https://github.com/pocketpy/pocketpy
    Type "exit()" to exit.
    >>>
    >>> "Hello, world"
    'Hello, world'

### # Application guide

Your need to send an email to `blueloveth@foxmail.com` with the following information:

1. A brief introduction about yourself, including the most related open sourced project you have worked on before. It is highly recommended to attach your Github profile link.
2. A technical proposal for the project you are interested in working on, including:
   - Your understanding of the project.
   - The technical approach/architecture you will adopt.
   - The challenges you might face and how you will overcome them.
3. A timeline for the project, including the milestones and deliverables.
4. Other information required by the Google Summer of Code program.

### # Coding style guide

See Coding Style Guide.

### # Contact us

If you have any questions, you can join our Discord or contact me via email. We are glad to help you with your application.