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 material which extends the knowledge about FIWARE
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 Chapter Active Contributor. If you have made outstanding contributions (code, knowledge, libraries, blog posts, presentations, Q&A contributions) to a FIWARE Chapter and want to be recognized as "Chapter Active Contributor", you will need to ask the corresponding Chapter Leader to recognize you as per your contributions. It is also possible that current chapter active contributors themselves propose you to be named as active contributor. Being recognized as "Chapter Active Contributor" implies that you will have a voice in the future direction of FIWARE. For instance, "Chapter Active Contributors" can participate in the election process of the FIWARE Technical Steering Committee (TSC) representatives at Chapter level or individually. See the FIWARE Bylaws
B/ FIWARE has a permanently open Bounty Program which allows to award those remarkable contributions. If you think you have something that deserves recognition and a small prize please apply for a Bounty!
Guidelines for Chapter Leaders to recognize contributions
A contribution made by a community member should be considered relevant enough to become a Chapter Active Contributor if:
- It is acknowledged as relevant by more than one Chapter Active Contributors that support it. For instance, solving various relevant bugs or contributing a library.
- It is a sustainable contribution over time to the source code base of a GEri, for instance as being part of the development team of a GEri team.
- It is a sustainable contribution to the knowledge base of FIWARE in the form of presentations, dissemination, tutorials or support offered at stackoverflow or ask.fiware.org.
Some guidelines to consider code contributions as relevant (in a period of time):
- At least three major bugs are fixed.
- A brand new feature (already present in the backlog / roadmap of the component) is implemented.
- A new, fully functional and tested library or adaptor (for instance to enable interoperability with other technologies) is contributed.
Some guidelines to consider knowledge contributions as relevant (in a period of time):
- Three blog articles / tutorials explaining technical details relevant for FIWARE technologies.
- Three presentations relevant for FIWARE made at relevant fora. This can include presentations made at training sessions or during the FIWARE Summit.
- At least 5 questions answered properly on the Q&A platform (ask.fiware.org) or Stackoverflow.
Chapter Active Contributor Expiration Policy
Every time a new election process for the FIWARE TSC is started (typically once a year) Chapter Leaders will have the opportunity to check whether existing "FIWARE Chapter Active Contributors" can remain or should be discontinued. If during the considered period there are no relevant contributions (see above) the status of Chapter Active Contributor should be revoked. Nonetheless, FIWARE will keep the name of the person in the list of FIWARE Contributors.