{"id":6414,"date":"2011-11-22T14:00:40","date_gmt":"2011-11-22T13:00:40","guid":{"rendered":"http:\/\/blog.trifork.nl\/?p=6414"},"modified":"2011-11-22T14:00:40","modified_gmt":"2011-11-22T13:00:40","slug":"compromise-is-hard","status":"publish","type":"post","link":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/","title":{"rendered":"Compromise is hard"},"content":{"rendered":"<p>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. \u00a0<a href=\"http:\/\/www.apache.org\">Apache Software Foundation<\/a> projects like <a href=\"http:\/\/lucene.apache.org\/solr\/\">Solr<\/a> and <a href=\"http:\/\/lucene.apache.org\/java\/docs\/index.html\">Lucene<\/a> tend to work from the motto that if it didn\u2019t happen on the mailing list, it didn\u2019t happen. \u00a0This means that no matter how experienced you are, how many years you\u2019ve been working on a project, or how knowledgeable you are about an issue, you can always chime in with your 5c worth. \u00a0I do have to agree with my friends, this, probably beyond anything else, is what I love most about my job.<\/p>\n<p>Yet this freedom doesn\u2019t come without its downsides. \u00a0Discussions on simple issues can quickly snowball into impassioned debates or worst still, flame-wars. \u00a0In 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. \u00a0Let me tell you, as someone who often plays the roll of a peacemaker, <strong>compromise is hard<\/strong>.<\/p>\n<p>To understand what I mean, lets quickly examine what happens in a corporate environment when an issue arises about lets say, a product. \u00a0Generally a group of people who know about the product will be brought together to discuss how to address the issue. \u00a0Best case scenario consensus is immediately reached about how best to go forward. \u00a0Worst case, the group fragments into sub-groups with different opinions and a debate breaks out. \u00a0However even with different opinions, the sub-groups are motivated to compromise by the fact that:<\/p>\n<ul>\n<li>Without agreement, the issue will be stalled, product ruined, the company potentially doomed and jobs lost. People like keeping their jobs.<\/li>\n<li>Developing the product is what they\u2019re paid to do<\/li>\n<li>Management will most likely make its own decision if agreement is not reached<\/li>\n<\/ul>\n<p>Compromise will be reached, even if it means some individuals having to relent entirely.<\/p>\n<p>In comparison, none of these motivations exist in the discussion about an issue in Solr or Lucene. \u00a0All 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. \u00a0Committers come from a wide variety of backgrounds and cultures. \u00a0Some 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. \u00a0There is no overriding corporate entity, no community agreed strategy. \u00a0Communication is done via mailing lists and JIRA issues which provide a degree of anonymity and physical distance.<\/p>\n<p>Consequently, when a committer finds themselves disagreeing with a change being suggested, there is not necessarily any reason for them to be compromising. \u00a0Assuming they have a valid technical reason for disagreeing, they can be as stubborn and unrelenting as they like. \u00a0Their livelihood will most likely be unaffected if another\u2019s \u00a0issue doesn\u2019t go forward. \u00a0Other issues will continue to be developed and there is very little likelihood that the projects will stall. \u00a0Trying to find a compromise or to encourage others to, in this sort of environment, can be very challenging.<\/p>\n<p>Yet it is exactly this kind of environment which has lead to many successes in Solr and Lucene. \u00a0Just 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. \u00a0Whether it be the <a href=\"https:\/\/issues.apache.org\/jira\/browse\/LUCENE-2308\">usage of a certain design pattern<\/a>, <a href=\"https:\/\/issues.apache.org\/jira\/browse\/LUCENE-3474\">the same pattern again<\/a>, or <a href=\"https:\/\/issues.apache.org\/jira\/browse\/LUCENE-3454\">the naming of core functionality<\/a>, compromises have eventually been made and agreements found. \u00a0Although I so often hate it at the time, I sometimes do wonder whether this is actually what I love most about my job.<\/p>\n<h2>We need you<\/h2>\n<p>Hopefully, in a roundabout way, I\u2019ve shown that being part of the Solr and Lucene community, albeit challenging, is also very rewarding. \u00a0If you\u2019re 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 <a href=\"http:\/\/wiki.apache.org\/lucene-java\/HowToContribute\">involved <\/a>in the community, become part of mailing list discussions and contribute to issues.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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. \u00a0Apache Software Foundation projects like Solr and Lucene tend to work from the motto that if it didn\u2019t happen on the mailing list, it [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[15,65],"tags":[35,33,278],"class_list":["post-6414","post","type-post","status-publish","format-standard","hentry","category-enterprise-search","category-big_data_search","tag-lucene","tag-solr","tag-open-source-community"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Compromise is hard - Trifork Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Compromise is hard - Trifork Blog\" \/>\n<meta property=\"og:description\" content=\"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. \u00a0Apache Software Foundation projects like Solr and Lucene tend to work from the motto that if it didn\u2019t happen on the mailing list, it [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/\" \/>\n<meta property=\"og:site_name\" content=\"Trifork Blog\" \/>\n<meta property=\"article:published_time\" content=\"2011-11-22T13:00:40+00:00\" \/>\n<meta name=\"author\" content=\"Chris Male\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Male\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/\",\"url\":\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/\",\"name\":\"Compromise is hard - Trifork Blog\",\"isPartOf\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#website\"},\"datePublished\":\"2011-11-22T13:00:40+00:00\",\"author\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/63ca100399079ec6e98e2b4365298806\"},\"breadcrumb\":{\"@id\":\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/trifork.nl\/blog\/compromise-is-hard\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/trifork.nl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Compromise is hard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/trifork.nl\/blog\/#website\",\"url\":\"https:\/\/trifork.nl\/blog\/\",\"name\":\"Trifork Blog\",\"description\":\"Keep updated on the technical solutions Trifork is working on!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/trifork.nl\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/63ca100399079ec6e98e2b4365298806\",\"name\":\"Chris Male\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8bbf7706dc08d42eaf11f2b18add0721?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8bbf7706dc08d42eaf11f2b18add0721?s=96&d=mm&r=g\",\"caption\":\"Chris Male\"},\"url\":\"https:\/\/trifork.nl\/blog\/author\/chris\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Compromise is hard - Trifork Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/","og_locale":"en_US","og_type":"article","og_title":"Compromise is hard - Trifork Blog","og_description":"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. \u00a0Apache Software Foundation projects like Solr and Lucene tend to work from the motto that if it didn\u2019t happen on the mailing list, it [&hellip;]","og_url":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/","og_site_name":"Trifork Blog","article_published_time":"2011-11-22T13:00:40+00:00","author":"Chris Male","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chris Male","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/","url":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/","name":"Compromise is hard - Trifork Blog","isPartOf":{"@id":"https:\/\/trifork.nl\/blog\/#website"},"datePublished":"2011-11-22T13:00:40+00:00","author":{"@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/63ca100399079ec6e98e2b4365298806"},"breadcrumb":{"@id":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trifork.nl\/blog\/compromise-is-hard\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/trifork.nl\/blog\/compromise-is-hard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/trifork.nl\/blog\/"},{"@type":"ListItem","position":2,"name":"Compromise is hard"}]},{"@type":"WebSite","@id":"https:\/\/trifork.nl\/blog\/#website","url":"https:\/\/trifork.nl\/blog\/","name":"Trifork Blog","description":"Keep updated on the technical solutions Trifork is working on!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/trifork.nl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/63ca100399079ec6e98e2b4365298806","name":"Chris Male","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8bbf7706dc08d42eaf11f2b18add0721?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8bbf7706dc08d42eaf11f2b18add0721?s=96&d=mm&r=g","caption":"Chris Male"},"url":"https:\/\/trifork.nl\/blog\/author\/chris\/"}]}},"_links":{"self":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/6414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/comments?post=6414"}],"version-history":[{"count":0,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/6414\/revisions"}],"wp:attachment":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/media?parent=6414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/categories?post=6414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/tags?post=6414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}