LibreCourseUY

How to Contribute

We welcome contributions from everyone! Whether you're a beginner or experienced developer, there's a place for you in LibrecourseUY.


Why Contribute?

Learn New Skills

Work with real technologies used in the industry: Python, FastAPI, Vue.js, Git, and more.

Build Your Portfolio

Add meaningful open source contributions to your CV and GitHub profile.

Join the Community

Connect with other students and developers who share your interests.

Help Others

Your contributions help incoming students navigate their engineering journey.


Getting Started

New to open source? Here's how to start:

Important: Before contributing, read and make sure you agree with the license of the repository you want to contribute to. Each project has its own license that defines how you can use, modify, and distribute the code. You can find it in the LICENSE file in the repository.

Required: You must accept our Contributor License Agreement (CLA). By submitting a Pull Request with cryptographically signed commits, you acknowledge and agree to the CLA terms. All commits must be signed with GPG.

  • 01

    Explore the Projects

    Visit our Projects page to understand what we build. Pick a project that interests you!

  • 02

    The Basics

    Check our Git Guide to learn how to use Git and GitHub properly.

  • 03

    Find an Issue

    Look for issues labeled "good first issue" on our GitHub repositories. These are beginner-friendly tasks.

  • 04

    Ask Questions

    Don't hesitate to ask questions in the Issues section. We're here to help you learn!


Contribution Process

Follow these steps to make your first contribution:

  • 01

    Fork the Repository

    Click the "Fork" button on the GitHub repository to create your own copy of the project.

  • 02

    Clone Your Fork

    Download your forked repository to your local machine.

    git clone https://github.com/YOUR_USERNAME/project.git
  • 03

    Create a Branch

    Create a new branch for your changes. Don't work directly on main!

    git checkout -b feature/your-feature
  • 04

    Make Changes

    Edit the code, add features, or fix bugs. Make sure your changes work correctly.

  • 05

    Commit Your Changes

    Save your changes with a descriptive commit message.

    git add . && git commit -m "feat: description of changes"
  • 06

    Push to GitHub

    Upload your changes to your forked repository.

    git push origin feature/your-feature
  • 07

    Create Pull Request

    Go to the original repository and create a Pull Request. Describe your changes and submit!


Contribution Guidelines

Code Standards

  • Write clean, readable code

  • Add comments for complex logic

  • Follow existing code style conventions

  • Test your changes before submitting

Any Language is Welcome

You don't have to use the same languages already in the project! Want to add a Rust API to fingcomms (built with FastAPI)? Go ahead! Want to create a Python CLI tool for fingmap (built with Vue)? Be our guest!

We believe in polyglot development. If your language or framework is better suited for the job, use it. We'll figure out how to integrate it.

Example: fingcomms is built with FastAPI (Python) + Vue.js, but if you want to add a Rust microservice for image processing or a Go CLI tool for data export, that's exactly what we want to see!

Commit Messages

We use Conventional Commits format:

type: description
  • feat: New feature

  • fix: Bug fix

  • docs: Documentation

  • refactor: Code restructuring

Signed Commits (Required)

All commits must be signed. This is a mandatory requirement for contributing.

Why Signed Commits?

  • Security: Verifies that you are who you claim to be

  • Integrity: Guarantees the commit wasn't modified after creation

  • Trust: Other contributors know changes genuinely come from you

  • Professionalism: Industry best practice for open source projects

Set up your SSH key following our Git Guide.

git config --global commit.gpgsign true

Pull Request Requirements

  • Describe what you changed and why

  • Include screenshots for UI changes

  • Test that everything works

  • Be responsive to feedback


Have Questions?

We're here to help! You can:

Open an Issue or Ask questions on GitHub

Find us on our Discord server