Skip to main content

Build your first open-source project and get your first 100+ stars

· 8 min read

100 stars

After of years of learning new technologies, I was sick of doing the same tutorial over and over again. You know what I mean, you want to learn a new programming language, you read the documentation and then you start doing the classic to-do list project until you get sick of it.

I wanted to do something different, something that could help me to learn a new technology and at the same time, be more interesting and useful than a to-do list project.

Also, I wanted to give back to the community. I had learned a lot from open-source projects and I wanted to contribute to the community and have a positive impact on the ecosystem.

This is how I got into open-source. I found it fascinating so I decided to write this blog post to help you discover the majestic world of open-source as well.

My story

Some time ago, I wanted to learn Rust. I read the documentation and it was time to start coding. I was thinking about what project I could do. I wanted to do something that could help me to learn Rust and at the same time, be useful for the community.

After some years working with containers, I had a need to have a tool that was waiting for a service to be ready before running a command that will use that service. I found some tools that were doing that but they were not working as I expected. So I decided to write my own tool in Rust.

I started coding and after some days, I had a working prototype. I was happy with the result and I decided to release it. This project was on the first page of Hacker News and it got more than 100 stars on GitHub. It seems that people like it and I hope they find it useful.

You can check it out here if you are interested: is_ready.

hackernews

How to start your first open-source project

The very first thing you need to do is to find a project idea. It could be:

  1. A tool that you need and it doesn't exist.
  2. A tool that automates something you are doing manually and it could be useful for others.
  3. Your imagination is the limit. You can do whatever you can imagine.

After you have your idea, you need to start coding. I would suggest you doing the following:

  1. Use GitHub to host your project since it is the most popular platform for open-source projects.
  2. The project does not have to be perfect, but it has to be decent. An early adopter should be able to use it without any major issues. In any other case, people will not use it.
  3. It is expected to have bugs. Do not worry about that. People will report them and you will fix them in the future. It is part of the process.

Documentation

Documentation is very important. You need to have a README file that explains what your project is about, how to install it, and how to use it. The file should be clear and concise. People should be able to understand what your project is about in a few seconds. If they don't, they will close the tab and move on.

License

You need to have a license for your project. You can use an open-source license like MIT, Apache, etc. You can find more information about licenses here. This is an important step since it will protect your project and the users of your project. If you don't have a license, people might not use your project since they don't know what they can do with it.

Releasing the v1.0.0

After you have your project ready, you need to release the first version. You can use semantic versioning to version your project. The first version should be 1.0.0. This is a signal that your project is stable and it is ready to be used by others.

The release project depends on what you are building. This blog post will cover the cases of building a library or a command line tool.

Library

If you are building a library, you will have to publish it to a package registry so other can use it and import it in their projects. Examples of package registries:

  1. crates.io for Rust packages
  2. npm for JavaScript packages
  3. PyPI for Python packages
  4. RubyGems for Ruby packages

Command line tool

If you are building a command line tool, you will have to release it as a binary so others can download it and use it. You can use GitHub releases to release your project.

For the command line tools, it is a good idea to have a Docker image as well so people can use it without installing it on their machine.

This Docker image can be hosted on Docker Hub or GitHub Container Registry.

Other tips

In any case, releasing a project is a time-consuming process. You might need to automate it in the future. You can use GitHub Actions to automate the release process. There are tools such as Go Releaser to release Go projects using GitHub Actions, or documentation on how to release JavaScript packages to npm.

Promoting your project

This is one of the most important steps. You need to promote your project so people can find it and use it. In you skip this step, your project will be forgotten and no one will use it despite the effort you put into it or how good it is.

  1. You can write a blog post about your project. You can use platforms like Dev.to, Medium, Hashnode, or your own blog if you have one. You can write about the problem you are solving, how your project is solving it, and how people can use it.

  2. You can share your project on social media. You can use platforms like Twitter, LinkedIn, Reddit, Hacker News, etc. You can ask people for feedback and suggestions. People love to help and give feedback so don't be afraid to ask. Warning: Do not spam, people don't like that. Be respectful and share your project as a way to help others and give back to the community. In any other case, people will see it as an advertisement and no one likes advertisements.

  3. Explore marketplaces or lists of open-source projects. You can find lists of open-source projects on platforms like GitHub. For example, there are the awesome lists such as awesome-rust, awesome-go, awesome-react, etc. You can add your project to these lists so people can find it and use it.

  4. You can give a talk about your project. You can find meetups or conferences that are related to your project and give a talk about it. People love to hear about new projects and technologies so you will have an audience that is interested in what you are doing.

  5. You could also create a video tutorial about your project. You can use platforms like YouTube. It is a great way for beginners to learn about your project and how to use it.

Next steps

After you have released your project and promoted it, you need to maintain it. You need to fix bugs, add new features, and keep it up to date with the latest technologies. You can create a roadmap for your project so people can see what you are planning to do in the future. You can use platforms like GitHub Projects to create a roadmap for your project.

You can also create a CONTRIBUTING file so people can see how they can contribute to your project. You can use platforms like GitHub Discussions to discuss new features or bugs with the community.

Not feeling ready yet?

If you are not feeling ready yet to start your own project, you can contribute to other projects. You can find open-source projects on platforms like GitHub. You can search for issues that are labeled as "good first issue" or "help wanted". You can also search for projects that are related to your interests and start contributing to them. After doing that for some time, you will feel more confident to start your own open-source project.

Conclusion

Open-source is a great way to learn new technologies, give back to the community, and have a positive impact on the ecosystem. I hope this blog post helped you. If you have any questions, suggestions or want to share your experience with open-source, feel free to send me an email to [email protected] or send me a message on Twitter.

Stay in touch

I write one blog post every week about exciting things in technology, books and remote work. Subscribe to my newsletter to stay in the loop with the latest updates, stories, and insights. Join me on this exciting adventure!

No spam, I promise.