Compromise is hard
Whenever I talk my job with friends who are also IT professionals, the most commonly desired aspect is that I get to work in a community where everybody has a voice. Apache Software Foundation projects like Solr and Lucene tend to work from the motto that if it didn’t happen on the mailing list, it didn’t happen. This means that no matter how experienced you are, how many years you’ve been working on a project, or how knowledgeable you are about an issue, you can always chime in with your 5c worth. I do have to agree with my friends, this, probably beyond anything else, is what I love most about my job.
Yet this freedom doesn’t come without its downsides. Discussions on simple issues can quickly snowball into impassioned debates or worst still, flame-wars. In Solr and Lucene, where we prefer to come to a consensus on a issue or code change, rather than railroading them through, this often means compromises must be made in order to appease all parties. Let me tell you, as someone who often plays the roll of a peacemaker, compromise is hard.
To understand what I mean, lets quickly examine what happens in a corporate environment when an issue arises about lets say, a product. Generally a group of people who know about the product will be brought together to discuss how to address the issue. Best case scenario consensus is immediately reached about how best to go forward. Worst case, the group fragments into sub-groups with different opinions and a debate breaks out. However even with different opinions, the sub-groups are motivated to compromise by the fact that:
- Without agreement, the issue will be stalled, product ruined, the company potentially doomed and jobs lost. People like keeping their jobs.
- Developing the product is what they’re paid to do
- Management will most likely make its own decision if agreement is not reached
Compromise will be reached, even if it means some individuals having to relent entirely.
In comparison, none of these motivations exist in the discussion about an issue in Solr or Lucene. All committers are equal, there is no management which will make a decision for the community and a single committer can veto a change if they have a valid technical reason. Committers come from a wide variety of backgrounds and cultures. Some are employed solely to work on the projects, some work for organisations that use the project artifacts in their own projects, some may very well be users or hobbyists who have invested some of their own time. There is no overriding corporate entity, no community agreed strategy. Communication is done via mailing lists and JIRA issues which provide a degree of anonymity and physical distance.
Consequently, when a committer finds themselves disagreeing with a change being suggested, there is not necessarily any reason for them to be compromising. Assuming they have a valid technical reason for disagreeing, they can be as stubborn and unrelenting as they like. Their livelihood will most likely be unaffected if another’s issue doesn’t go forward. Other issues will continue to be developed and there is very little likelihood that the projects will stall. Trying to find a compromise or to encourage others to, in this sort of environment, can be very challenging.
Yet it is exactly this kind of environment which has lead to many successes in Solr and Lucene. Just at that moment where all parties involved have thrown their toys from the cot and hair is being pulled, time and time again someone has stepped forward with a new idea or a new direction which all parties agree on. Whether it be the usage of a certain design pattern, the same pattern again, or the naming of core functionality, compromises have eventually been made and agreements found. Although I so often hate it at the time, I sometimes do wonder whether this is actually what I love most about my job.
We need you
Hopefully, in a roundabout way, I’ve shown that being part of the Solr and Lucene community, albeit challenging, is also very rewarding. If you’re either tired of having your voice ignored, passionate about open source search, or just like being part of a lively debate, I encourage you to get involved in the community, become part of mailing list discussions and contribute to issues.