Why start contributing to Kotlin projects right now?
\n\nYou've been writing Kotlin for a few months. You know about coroutines, you've figured out extension functions, and you even use sealed classes. But you feel like you're standing still? Sounds familiar. Open source is not about "free labor." It's about accelerating your growth 10 times. When you contribute to real projects, you:
\n\n- \n
- Get code reviews from developers at the level of JetBrains and Google; \n
- Learn to read and understand other people's code (and that's 80% of a senior's working time); \n
- Fill your portfolio with real cases, not training tasks; \n
- Make useful connections in the community. \n
In this article, I'll show you how to take the first step. Without fear, without complex theories — just practice. We'll look at where to find tasks, how to write your first meaningful PR, and not mess up.
\n\nWhere to start: choosing a project for your level
\n\nThe main mistake beginners make is trying to immediately contribute to the Kotlin Compiler or Ktor. Stop. That's a path to burnout. You need projects where:
\n\n- \n
- There is a
good first issueorhelp wantedlabel; \n - The current version of Kotlin (1.9+) is supported; \n
- There is a clear
CONTRIBUTING.md; \n - The community answers questions within 1-3 days. \n
Top 5 projects for starting in Kotlin open source
\n\nHere are proven repositories I recommend you check out:
\n\n- \n
- detekt — a static code analyzer. Lots of tasks for documentation and simple rules; \n
- Kotlinx.serialization — a library from JetBrains. There are
good first issuetasks for beginners; \n - Ktor — a framework for servers and clients. They often need help with documentation and tests; \n
- Exposed — an ORM for Kotlin. Ideal if you have worked with databases; \n
- Anko — although the project is frozen, there are still many open issues for documentation. \n
Important: don't try to grab everything at once. Choose one project that you are genuinely interested in. If you like writing tests — go to Ktor. If you like making code cleaner — detekt is your option.
\n\nHow to find your first task: exploring GitHub Issues
\n\nLet's say you've chosen a project. Go to the Issues section. Your goal is to find a task that:
\n\n- \n
- Is marked
good first issueorbeginner friendly; \n - Is not assigned to another developer (no assignee); \n
- Is active (the last comment is not older than 2 weeks). \n
A real-life example. I went to the detekt repository and found an issue: "Add documentation for new rule: MagicNumber". The task: write documentation in Russian or English for a new rule. This is an ideal first PR — it doesn't require deep code knowledge, but you are already making a real contribution.
\n\nFork, clone, set up the environment
\n\nOnce the task is chosen, follow this scheme:
\n\n- \n
- Fork the repository (the Fork button in the top right corner); \n
- Clone the fork locally:
git clone git@github.com:YOUR_USERNAME/detekt.git; \n - Add the upstream:
git remote add upstream https://github.com/detekt/detekt.git; \n - Create a branch:
git checkout -b docs/add-magic-number-rule. \n
The branch name should be meaningful. Use prefixes: docs/ for documentation, fix/ for bug fixes, feat/ for new features.
Writing code: a real example in Kotlin
\n\nLet's say we found a bug in the Kotlinx.serialization library. The issue says: "Serializer for LocalDate throws exception when year is negative". Let's look at how this can be fixed.
\n\nFirst, find