I Need New Feature
I need to do something that cannot be done in stock midPoint right now. What should I do?
There are several options for you. But before we get to that, I would like to describe the situation of the midPoint project, so you can better understand your options and our motivations.
MidPoint project has a rich history. To cut a long story short: the code that makes up midPoint now originated in 2010. It was developed and it is maintained by the team that now makes the Evolveum company. Vast majority of midPoint development was funded by the Evolveum team: the three founders of Evolveum and our employees. Evolveum has no venture capital, therefore we have kept the development going for the first 4 years by investing our own time and money. For this type of funding it was really a huge investment - literally investing tens of man-years into the project without any guarantees that it will ever be repaid. During this stage midPoint reached a formidable size, and it unquestionably became the most comprehensive open source IDM system available.
However, the investment-based funding is not sustainable and it has to end sooner or later. Evolveum migrated from the investment funding to self-funding in first half of 2014. The self-funding is going on ever since. Therefore the midPoint project has to pay for itself. The founders are usually leaving most of the profit in the company and re-investing it. Yet, that are the only internal funds that we can use for maintaining and extending midPoint. All the other funds needs to come from external sources: subscriptions, professional services, sponsoring and so on.
The Roadmap also reflects this setup: part of the effort for each new release is funded by Evolveum, the other part is reserved for features suggested by subscribers.
If you need a new feature in midPoint or change the way how midPoint behaves in any other way you have several options:
Develop it yourself. MidPoint is an open-source project. You can extend and modify it to match your needs. MidPoint source code is hosted at github and it is strictly licensed under a very liberal licenses. Therefore, starting the development is as simple as forking the code on github. The system architecture and design is reasonably well documented and we take great care for the code to be readable. If you commit to develop a certain feature well will do our best to support you on a public mailing list. However this still remains the "best effort" service. If you need more dependable support during your development you can purchase a development subscription from Evolveum. If you plan to release your code under the same open-source licences as we are using, and you agree to let your code become a part of midPoint, and the feature is reusable, and the code quality is acceptable, we will be more than glad to accept your contribution and make it part of midPoint. Just discuss your idea with us, and we can always work out a way how to cooperate. However, in this case you need to be committed to do most of the work yourself.
Share your idea with us and wait for the feature to be developed. Describe the feature to us. If the feature is generally-usable and feasible to implement we will put the feature into our backlog. We will not turn down any good idea. However, please keep in mind that our backlog is long and many features compete for a place in the roadmap. It may take several years for a specific feature to find its place in the development plan. The feature requests that originated from midPoint subscribers quite understandably take precedence (see "The Basic Rule" below).
Get a platform subscription or an equivalent service. The subscription will give you a guarantee that our team will tend to your issue. But there is another aspect to the subscription. You can use a part of your subscription money to influence midPoint development. It works like this: You consider to purchase a subscription. But you also want a specific feature. You discuss this with us and we can agree on a development plan to deliver the features you need.
You can "sponsor" or "buy" the feature. Simply speaking, you can buy a place on a roadmap for your feature.
The Basic Rule
The basic rule is very easy to understand:
Requests coming from the people who spend time or money on midPoint take precedence.
Therefore we prefer requests from people that are prepared to commit some value to the midPoint project. This includes:
Subscribers send money that are used to pay for our salaries, servers and other costs.
Customers that use our professional services or that are explicitly paying for features or fixes.
Contributors that independently develop midPoint code and submit their work back to main midPoint repository. Also engineers that help in testing the product, improve documentation, etc.
Partners that help propagating midPoint in business or academic environments by independently organizing presentations, marketing activities, preparing papers, writing blogs, etc.
When planning midPoint development the requests from the people who spend time and money will be satisfied first. We also at the relative value of the money or result. We do not value money over code or vice versa. It all depends on how significant the commitment is, not it is the money, code or something else. A big contribution of a code has a higher value for us than a small subscription fee. A good marketing activity can make much better impact than a simple bugfix. However, during the years of midPoint development we have seen that people who are ready to commit something to the project do this after a due consideration. It looks like they all have a very similar requirements. Therefore, we see a lot of synergism here and there are almost no conflicts between requests from people that are prepared to commit something to midPoint. This is what makes the whole midPoint project possible and thriving.