MidPoint is open to contributions. Any contribution is appreciated whether it is documentation update, localization, bugfix or a new feature. Anyone can start experimenting with midPoint code without the need to ask for any privileges or access to our source code repository. Git distributed development model allows this to be done easily. This pages describes how to do it. It describes how to create and contribute a simple bugfix and also how to cooperate with the midPoint team in a longer run.
Communication with core midPoint development team is crucial for any successful participation in midPoint development. There are several methods to communicate with the core team:
Mailing lists are general-purpose communication mechanisms for midPoint community. All mailing lists are public. Almost any conversation is allowed on mailing lists as long as it is kept reasonable and polite. This includes conversation regarding development topics. However, the nature of a mailing list can make the conversation somehow slow and inflexible.
Bug-tracking system is open to anyone to search, open a bug report or participate on existing bug reports.
Development chat room on gitter can be used as a faster communication channel. The room is public. However, the room is limited to development conversations. It is OK to discuss your contribution, planned contribution, development idea, localization, documentation updates and similar topics on this chat. However, the chat room is not supposed to be a replacement for subscription and support.
There are other private communication channels available for midPoint subscribers - and platform subscribers in particular. Please contact Evolveum for the details.
Public community communication
As a matter of Evolveum policy, all community communication must be public. There are public mailing lists, development chat room, public wiki and bug tracking system - all completely open to community. Evolveum is fully participating in all those public community communication channels. We are fully committed to open development practices. Information sharing is a crucial part of our openness policy. Therefore no support or consultations will be provided by using any private communication channels. That includes private mail communication, private chat conversation and so on. Private communication channels are available only to midPoint
subscribers. Subscribers are funding midPoint development and therefore they are entitled for exceptions to this policy in case that such exception is needed. Except for such cases we are fully committed to complete openness of midPoint development process. Therefore we have decided to enforce the open communication policy.
Git is a distributed version control system that we use to maintain midPoint source code. Its non-centralized character allows for a variety of development models and workflows. This page describes just two possible scenarios but almost any approach supported by git is possible to use with midPoint development. Although it is easy to start contributing to midPoint by following the instructions on this page understanding of Git principles is important for efficient midPoint development. Please see our Git page for more details about git, location of our source code repositories, tips for using git software, etc.
Evolveum maintains midPoint repository on GitHub:
This is the primary midPoint repository. GitHub users may use this repository to submit a contribution. This is the easiest way how individual developers can contribute to midPoint. Simply fork midPoint project on github, make the changes and when finished create a pull request.
Please see github documentation for the details.
Github, Gitlab and big evil corporations
Some people will certainly express concerns about our use of github. After all, github is a centralized platform. And as such, there are always concerns of abuse, monopolization and single point of failure. We are more than aware of such concerns. And we highly value project autonomy. Despite that we have decided that centralized platforms such as github are providing good value - if they are used in moderation.
We are using github to publish the code (git repositories) and to govern pull requests. We are not relying on github for anything else. We are not using github issues, wiki or any similar feature. And we do not plan to. Because we value our autonomy. Github was acquired by a certain corporation which has done questionable things in the past and there is no telling what will be done in the future. Therefore we need a freedom to evacuate our projects from github when things start to move in wrong direction. Git makes this easy, as migrating git repository is basically a question of a single push. Therefore we use github today, but it may be gitlab tomorrow and we may migrate to a completely self-hosted solution the day after. But the situation is quite different for github issues and wikis - those are not that easy to migrate. Therefore we do not use them at all. We still use github pull requests, though. Those provide very good value. And pull requests are temporary anyway - if handled correctly. Accepted pull requests are transformed into git history. And we do not care about refused pull requests that much. Therefore there is very little risk of losing pull request history. Everything we value is part of git and git is easy to migrate any time.
There is also a traditional way how to collaborate using git, by sending patches in development mailing list. This method is rarely used, but we still support it if you happen to prefer this method.
MidPoint project is open to contributions. However, there are some criteria and recommendations for contributing. Please have a look at Code Contribution Guidelines for the details.
Licence and Credit
MidPoint is dual-licensed under the terms of Apache Licence and European Union Public License (EUPL). By submitting your contribution to the main midPoint repository you have to agree to the terms of the licences and you have to make it clear that the work can be used under both licenses. Therefore we have to request signing of Contributor License Agreement (CLA) from all contributors to midPoint core.
We are very strict about maintaining midPoint open source character and therefore we will not accept any contribution under a different licence (using publicly available third-party open source libraries is OK as long as they are available under any compatible OSI-approved licence - except for hard copyleft licenses such as GPL). Each new contributed file must have appropriate header declaring licensing under Apache Licence otherwise the contribution might be refused.
Git maintains the commit meta-data of the original commit.
And this is what will be recorded in the history trail of main midPoint repository.
Therefore the original contributor will be recorded in each commit. Apart from this the contributors are free to add their names to the appropriate place in the file header (e.g. Java
@author annotation) if they feel their contribution is big enough to justify it.