How to Contribute
From FIWARE Forge Wiki
How to contribute to FIWARE (draft)
Contribute source code
If you want to contribute to a GEi project with source code there are two different scenarios:
- Refinement contributions. These are small contributions which fix a bug or polish an existing feature. The amount of code to be contributed is small. In this particular case it is not needed to sign any kind of contribution agreement regarding Intellectual Property Rights (IPRs). It would sufficient to keep license headers as they are, since they are stating who the copyright owner is. By doing so you are assigning to the copyright holder the ownership of your contribution. Of course, author's name will be added to a credits file. In the event of creating a new source code file it can be stated in the header who is the author, although the copyright must remain to be the same copyright as usual for the concerned component.
- Complete new feature contributions. These are contributions of medium or large size which imply delivering complete new features and associated code to a GEi. In this case the contributor must sign a Contributor License Agreement before adding new files to the codebase. For instance, here is the one to be signed for Orion Context Broker.
Contributions with refinements of an existing feature
First of all, it is needed to search for a suitable bug and then try to fix it. Every GEi project has a Github repository with outstanding issues listed. Let's describe this process through an example. Imagine you want to contribute to Orion Context Broker. Essentially, the following steps will be followed:
2. Go to the original source repository (linked from the former mirror) https://github.com/telefonicaid/fiware-orion.
3. Select the issues tab and search for an issue labeled as "Welcome Contribution". If this is the first time you contribute it is highly advised to search for an issue labeled both "Welcome Contribution", "EntryLevel". (Filter label:"Welcome Contribution" label:EntryLevel). Orion issues labelled as welcome contributions are listed at Orion Context Broker Welcome Contributions.
4. Notify the community that you intend to solve the issue by making a comment on the issue or by assigning yourself to it. Then, a mentor(s), from the active contributors group, will guide you through the best way to solve the issue. When developing the code which solves the issue please follow the Developer Guidelines. This basically means that, in order to land your code, you will need to issue a pull request (which must include tests and documentation). Then such pull request will have to be reviewed and approved by an active contributor.
5. It is recommended that :
- regular communication (at least once a week) with the mentor occurs, as the mentor needs confidence that the task is moving in a good direction.
- respect the mentor's guidance, particularly with regards to patch submission and review.
6. Once you have addressed all the comments, test are passing etc. your code will land into the main codebase. Congratulations you will have made your first contribution to FIWARE!!.
Contribute with a tutorial, blog article or any other knowledge
Contributing by generating new knowledge (tutorial, articles, presentations, etc.) should be easy. First write a blog post which include the content and resources and then announce it through the FIWARE Community Channel in mobilize.io. Afterwards that blog post could be referenced / published from the official FIWARE Web Site if the community thinks it is useful and of good quality.
Another option is to contribute to the FIWARE Tour Guide for Developers. For doing so pull requests must be issued against its corresponding Github content repository https://github.com/fiware/docs.TourGuide.
Finally, you can contribute to the FIWARE Tour Guide Application which is the main tutorial maintained by the FIWARE Community. Its github repository is at https://github.com/fiware/tutorials.TourGuide-App. As it happens with other repositories the standard contribution mechanism is a Pull Request.
Contribute with a library
Libraries are always welcome by developers as they make their life easier. As FIWARE relies on REST APIs abstraction libraries can help to simplify API access. If you have developed a useful library please announce it and share it with the rest of community members. Use the mobilize.io channel for doing so.
As per the FIWARE principles of transparency and meritocracy it is important to recognize those community members who play an active role by performing remarkable contributions to our Community.
You can be recognized by means of two different mechanisms (not disjoint):
A/ By being recognized as an active contributor. If you have made outstanding contributions (code, knowledge, libraries) and want to be recognized as active contributor, you will need to ask the existing active contributors to recognize you as per your contributions. There can be times that the existing active contributors themselves propose you to be named as active contributor. Being recognized as an active contributor implies that you will have the right to review others code and have a voice in the future direction of such a component in FIWARE.
B/ FIWARE has a permanently open Bounty Program which allows us to award those remarkable contributions. If you think you have something that deserves recognition and a small prize please apply for a Bounty!
If your contribution is not source code but it is knowledge (blog posts, presentations, Q&A contributions) you can ask for a recognition as well.