Skip to content

Instantly share code, notes, and snippets.

@Eomm
Last active June 4, 2024 10:38
Show Gist options
  • Save Eomm/dc70b6196e99da7a8cf0bd6756b7a99c to your computer and use it in GitHub Desktop.
Save Eomm/dc70b6196e99da7a8cf0bd6756b7a99c to your computer and use it in GitHub Desktop.
Start contributing to OSS

Start contributing to OSS

Do you want to start contributing to Open Souce Software and the Fastify project?

It would be best if you started asking yourself where to start:

  • Do you want to write code?
  • Do you want to understand how things work?
  • Do you like DevOps stuff?
  • Do you want to work on Github action automation?
  • Do you want to make an impact on the community?
  • Do you want to improve your programming skills and knowledge?

Your answer is the meaning that will keep you motivated at the beginning of this OSS journey. You will certainly learn something new, and you will feel satisfied for sure.

Then, you must search for an issue to do. Use the GitHub search to find it:

🚨 If you don't find the issue ping me here and describe your answer to the previous question. I will be able to suggest you an issue.

🐛 If you find something you are interested in, write on the issue "I would like to work on it"!

Note that it could seem lovely initially: the first step is the most difficult one.

I asked the same to Matteo Collina and he told me:

Manuel, you should start from things people don't want to do: documentation.

Actually, when I wrote Fastify's documentation, I had to learn how it works and all the internal!

It was a big win - but a bit boring at the beginning 😄

@RafaelGSS
Copy link

RafaelGSS commented Jan 31, 2022

good job!

@xelobcoder
Copy link

Nice one. I struggle with where to actually begin. All the codes seem advanced to me and if it isn't, understanding the codebase becomes extremely problematic. How do I deal with that?

@Eomm
Copy link
Author

Eomm commented Jan 6, 2024

How do I deal with that?

There is no shortcut for this 😞

The "dividi et impera" pattern works every time: focus on one thing and bite it in small pieces.

ordered by less difficult to most difficult IMHO:

  • how does the hook system work?
  • how does the decorator system work?
  • how does the request parsing work?
  • how does the json-schema system work?
  • how does the routing work?
  • how does the encapsulation system work?
  • how does the error handling work?

The Fastify code base is one of the easiest IMHO because:

  • no tons of layers: only plain Node.js code + a linter
  • no naming conventions nor magic autoloading stuff, so the CTRL+F works
  • no need for tons of IDE plugins to work out
  • run a test file with node <test file>.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment