Contribute to the Kotlin Libraries Playground for #hacktoberfest
Tags: showdev, hacktoberfest, kotlin, android
Published: 2020-10-01 17:26:10

**[Hacktoberfest](https://hacktoberfest.digitalocean.com/) just started**, and I have just the right kind of project to show you if you want to contribute some **Kotlin**!

Hacktoberfest is a month-long celebration of open-source technology organized by DigitalOcean. If you’re new to development, a student, longtime contributor, event host, you can help drive open-source and offer significant contributions to an ever-growing community.

If you haven't done so already, [**register for hacktoberfest here**](https://hacktoberfest.digitalocean.com/).

Last year, I suggested in my article [contributing to open-source is like dancing Tango ](https://dev.to/jmfayard/what-dancing-tango-tells-us-about-hacktoberfest-4kmd) to pick something meaningful but simple, and focus on the social side of programming: it's all about creating a connection!  

This year, I am launching a brand new project that is designed to make it easy for you to contribute something meaningful!

{% github https://github.com/LouisCAD/kotlin-libraries-playground %}

# 📚 The Kotlin Library Playground

There are [great resources to learn Kotlin](https://dev.to/jmfayard/best-ways-to-learn-kotlin-from-scratch-or-from-java-with-books-or-tutorials-online-or-in-the-ide-52cm). 

But once you master the language, you are not done just yet.

You now face another challenging task: become familiar with its ecosystem of libraries.

There are several inefficient ways to do that:

- reading tutorial after tutorial and being stuck in a loop where you "learn" about things you don't practice
- starting a new project from scratch for every libraries you come around - overwhelming
- trying out the library in your main project at work - a project with a compilation time of 5 minutes, who uses an older version of the library than the tutorial assumes ; not sure your colleagues will be happy that you introduce a dependency you don't master yet.

The Kotlin Library Playground is a crowdsourcing of sample usages from popular Java & Kotlin libraries.

It aims to give you **wider** knowledge of what good libraries are available. 

- Interested in networking? We have samples for OkHttp, Retrofit and Ktor-Client. 
- Interested in testing? We have samples for junit-jupiter, kotest, spek, strikt, mockito, mockk, ... 
- Interested in database? We have you covered with Sql Delight, Kodein DB and Exposed.
- Interested in trolling about what is The Best(tm) DI framework? We have samples for Dagger, Koin and Kodein
- … you get the idea.


It is a non-goal to pick sides and say what library is best for a given topic.

Instead what we give you is a starting point if you want to go **deeper** in your knowledge of some specific libraries particularly important for you: you already have a Gradle project setup with the dependencies, just follow the documentation and hack you way into more knowledge!


# ❤️ Contributors welcome!

Head over to [the "issues" tab](https://github.com/LouisCAD/kotlin-libraries-playground/issues)  and select a library for which you feel like contributing a usage sample

<a href="https://github.com/LouisCAD/kotlin-libraries-playground/issues"><img width="829" alt="Issues_·_LouisCAD_kotlin-libraries-playground" src="https://user-images.githubusercontent.com/459464/94722247-50594d80-0357-11eb-8ff8-edeadebd33d5.png"></a>

Your goal is to contribute for your library of choice a **self-contained, simple yet meaningful** sample.

Here is for example a sample for [Moshi](https://github.com/square/moshi), a modern Json library for Kotlin and Java

<img width="888" alt="kotlin-libraries-playground_–_Moshi_kt" src="https://user-images.githubusercontent.com/459464/94723482-18eba080-0359-11eb-951e-099e0d456455.png">

What do those 1-2-3-4 mean?

Thanks for asking, [**it is described in details in the CONTRIBUTING guide**](https://github.com/LouisCAD/kotlin-libraries-playground/blob/main/CONTRIBUTING.md) 

# 🤔 What does a contribution look like in practice?

To give you an idea, here is an excellent contribution from Douglas Camata for Kodein, a Dependency Injection library:

{% github https://github.com/LouisCAD/kotlin-libraries-playground/pull/13 %}

# ✅ TL:DR 

1. [Register for hacktoberfest](https://hacktoberfest.digitalocean.com/)
2. [Read the README](https://github.com/LouisCAD/kotlin-libraries-playground) 
3. [Claim an issue as yours](https://github.com/LouisCAD/kotlin-libraries-playground/labels/good%20first%20issue)  
4. [Read the contributing guide](https://github.com/LouisCAD/kotlin-libraries-playground/blob/main/CONTRIBUTING.md)
5. Code, code, code and submit your PR
6. Only three more PR to go, and you get the nice tee-shirt!