I Have Found a Bug

Last modified 22 Apr 2021 17:31 +02:00

I have found a bug in midPoint. I want it fixed. What should I do?

The answer to this question depends on whether you have midPoint subscription or not. But first, let me explain the basic principle of midPoint development.

Motivation

MidPoint development process is designed to be efficient and very flexible. We do most of the development directly on master branch. This gives us immediate feedback about the effect of every source code change. You can think of it as a way of natural and constant integration. It is one of the most efficient development techniques that we know about. Of course, this only works in small professional teams that consists of self-disciplined developers. We are very lucky to have such a team.

We really need this kind of efficiency. MidPoint is a substantial product. MidPoint is pushing the envelope of what open source IDM technology can do. Traditionally, IDM systems were (very) expensive. MidPoint made this technology much more cost-efficient. And the cost-efficiency of midPoint is based mostly in the efficient development and maintenance of midPoint source code.

To maintain this efficiency there are several concepts that we follow quite strictly:

  • We try to reproduce every bug using an automated test case, so we do not need to re-test is again and again. MidPoint is designed for this "test-driven" approach from day one.

  • The bugs are reproduced and fixed on master branch.

  • We keep development overhead ("paperwork") to the very minimum.

Especially the last point needs some explanation. E.g. we do not care about clean source code history that much. We are usually not re-basing or editing commits. We are not using gitflow process. We do not track every single minor bug in our bugtracking system. And so on. We prefer working system over all the ceremonies around it. We prefer readable source code over readable development history. We prefer good tests over reviews of all source code changes. We are pragmatic. We care about the result, not so much about the method how we got that result.

Reporting a Bug

The first step to fix a big is to diagnose and report it. Please follow this guide: Creating a Bug Report.

This step is the same for all midPoint users. Even users without subscription can (and are encouraged to) create a bug report. The difference is how and when the bug gets fixed.

Fixing a Bug

All the bugs are reproduced and fixed on master branch if possible. Which means that the bugfix will be part of the next midPoint release. We will not fix a bug in the latest stable or any other midPoint version unless:

  • This is a severe security issue.

  • MidPoint subscriber asks for a backport.

We decide when to fix the bug. Bug fixes for midPoint subscribers take precedence. While we try to fix all the bugs that we know about in each midPoint release, but low-priority issues may not get fixed. These are bugs reported by users without a subscription that do not affect majority of midPoint users. E.g. bugs that cause problems only in some environments, bugs triggered by exotic configurations, etc. We have a tight development schedule, and we choose to prefer fixing bugs that affect majority of users over exotic issues. So some bugs are usually moved out before a release.

As a rule, all the bugs reported by midPoint subscribers are always fixed before midPoint release. These cannot be moved out. Threrefore, if you want to make sure your bug is fixed, you will need a subscription.

Pay-Per-Fix And Other Services

Evolveum is not offering pay-per-fix service or any similar services. The only reliable option how to get bugs fixes is to obtain midPoint subscription. We are not offering such service because it is difficult to plan and manage the resources and there is also a huge administrative overhead. We are committed to a long-term maintenance of midPoint deployments. Therefore our programs are designed for long-term cooperation. Pay-per-fix service is not compatible with our approach.