This document contains useful information in case you want to become a contributor. There are many ways to contribute, and all of them are described in this document. Although, if you think you can contribute in another way, just open an issue or send me an email to fmvilas at gmail.com.
AsyncAPI is an open source project that's currently maintained by me, with no company or funds behind. More and more companies are using AsyncAPI and the work needed is becoming too much work for a single person working in his spare time. E.g., for each release of the specification, tooling and documentation should be updated. One could argue that I should be dedicating full time to the project, but it's in this point where it's too much for spare time and very little to get enough money to live. I want to keep everything for free, because I firmly believe that engineering must be democratized. Also, don't get me wrong, this is not a complaint. I'm going to continue running the project either with or without contributors, because I love it. This is just a call-out to you, the AsyncAPI lover. I'd be very grateful if you could lend a hand, or even raise your hand and become a co-maintainer. Up to you 😊
On the other hand, I only have good words for all of you who use and/or contribute to the project. Without you, it would be just another crazy idea from another crazy developer 😄
Thank you very much! 🙌
Here you can find a list of things you can contribute with:
There is always work to do in the spec. It goes from fixing typos to writing and reviewing new proposals. I try to keep releases small, to give time to tooling authors to update their software. If you want to start contributing, take a look at https://github.com/asyncapi/asyncapi/issues, pick one, and start working on it. It's always a good idea to leave a comment in the issue saying that you're going to work on it, just so other people know about it.
As developers, this is sometimes the most straightforward way to contribute. Adding features to the existing tools or creating new ones if needed. Examples of tools are:
- Code generators (multiple languages):
- https://github.com/asyncapi/generator
- https://github.com/asyncapi/node-codegen (going to be deprecated soon in favor of https://github.com/asyncapi/generator)
- Documentation generators (multiple formats)
- https://github.com/asyncapi/generator
- https://github.com/asyncapi/docgen (going to be deprecated soon in favor of https://github.com/asyncapi/generator)
- https://github.com/Mermade/widdershins
- https://github.com/asyncapi/asyncapi-node
- https://github.com/asyncapi/editor
- Validation CLI tool (nobody implemented it yet)
- API mocking (nobody implemented it yet)
- API gateways (nobody implemented it yet)
As always, usually the best way to contribute is to pick an issue and chat about it before you create a pull request.
Sometimes the best way to help a project like AsyncAPI is to simply talk about it. It can be inside your company, in a technology meetup or speaking at a conference. I'll be happy to help with whatever material you need to create or with arguments to convince your colleagues that using AsyncAPI is a good idea 😊
Oh! documentation! We're trying to convince people that documenting your message-driven APIs is a good idea, but we lack documentation, especially in tooling. This is often a task nobody wants to do, but the best way to get great knowledge about a technology is to write documentation about it. It doesn't need to be rewriting the whole documentation from scratch, but just identifying the questions you had when started using it and document them.
We learn by examples. It's a fact. Write tutorials on how to use AsyncAPI in your blog, Medium, etc. As always, count on me if you need ideas or help while writing or reviewing.
You have a blog and write about the technology you use? Writing about success stories, how-to's, etc., really helps people to find the project and decide whether they should bet on AsyncAPI or not.
You have a Youtube channel or your own podcast? Talk about AsyncAPI. Tutorials, interviews, informal chats, discussions, panels, etc. I'll be happy to help with any material you need or finding the right person for your interview.
Feel free to open an issue with your doubts or proposals. I'll answer as soon as possible.