Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 46F04200B46 for ; Sat, 16 Jul 2016 15:38:23 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 457F3160A6C; Sat, 16 Jul 2016 13:38:23 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 69AA6160A52 for ; Sat, 16 Jul 2016 15:38:22 +0200 (CEST) Received: (qmail 12003 invoked by uid 500); 16 Jul 2016 13:38:21 -0000 Mailing-List: contact dev-help@ofbiz.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ofbiz.apache.org Delivered-To: mailing list dev@ofbiz.apache.org Received: (qmail 11989 invoked by uid 99); 16 Jul 2016 13:38:21 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 16 Jul 2016 13:38:21 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 9C54DC31D7 for ; Sat, 16 Jul 2016 13:38:20 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.179 X-Spam-Level: * X-Spam-Status: No, score=1.179 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 3L4NY5twa8ji for ; Sat, 16 Jul 2016 13:38:19 +0000 (UTC) Received: from mail-qt0-f170.google.com (mail-qt0-f170.google.com [209.85.216.170]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id CBD8C5F1F3 for ; Sat, 16 Jul 2016 13:38:18 +0000 (UTC) Received: by mail-qt0-f170.google.com with SMTP id j35so72665768qtj.2 for ; Sat, 16 Jul 2016 06:38:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=NfV+bFfWgOtMA9syojLOXu+Re0QwGi8Rk/BdsMgvPr4=; b=nwBM4tCuLA8c2du1Ds1kC4+BBcelNUU9veg7XOPoqKAx8Gnjj06agGXbbo3c6TWDsU 6GKLoSfzA+6mXs8WA+mERWJJWYkTFPsQXYbVkFThu5u9jGRCoLJ3joOQAnlkSCAouZQc bo+R4tx7F816jN5JGp+hZxRCHtPsrvf0WB6g0Z9LKDo9IdSdngKZsXaEBHHFvcqIxG4/ o2hDNpZE0zCueBO9C1KgRi95vyNzbrqrfDY1zDbqNZDWMG7DpIqP3epBteCb7Z8MHMua 71hvl7eeUOWsxG+JwPWojATgQYouHJJeoEz5vIv+VKhBNZvE7XKntEuOvQVXe056Plvv bFww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=NfV+bFfWgOtMA9syojLOXu+Re0QwGi8Rk/BdsMgvPr4=; b=V0Eu9YHrQirbWKNAmgugb4bgWa2bqx1CQ/iNTOBTpDc036PBwAkxjs7HOaDB5fs4or yrzrEt8qe2Rcx5fKZdOOJvLO5NDvYdH5E95OF0JW4p25d/iNABEYGs42KFtkgjA5l7Gq R2/CkyVTO7LcC6MAUtaHKXkab6D9VQdvzyoy09ajoNIFtBAbk2aCTFelZ38i6vmTkgXO R7/R848EAkEvc1W6rPW2OLLFyi1huLw9AyLCWNH4NrQR2eahaT2+IB+/cOcOM//6UktZ 8FXRt9tFCkJGLSuu1AElFpq+6noDWAd4W6ufXLDwdBR8XOzRYJzzrsvUD7FmmRQoMoTQ KNrQ== X-Gm-Message-State: ALyK8tIPLLn4/vURIbTBO3cBAFYlAn0MnZZ6uHmLEeJpyqgJyNke2hUVIz5jVFZVSFImg2M9aNob62bv78HWDg== X-Received: by 10.200.33.172 with SMTP id 41mr37736276qty.26.1468676292228; Sat, 16 Jul 2016 06:38:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.8.140 with HTTP; Sat, 16 Jul 2016 06:38:11 -0700 (PDT) From: Taher Alkhateeb Date: Sat, 16 Jul 2016 16:38:11 +0300 Message-ID: Subject: [Discussion] Shifting our OFBiz culture to enable innovation To: OFBIZ Development Mailing List Content-Type: multipart/alternative; boundary=001a113f495eb03b430537c0d858 archived-at: Sat, 16 Jul 2016 13:38:23 -0000 --001a113f495eb03b430537c0d858 Content-Type: text/plain; charset=UTF-8 Hello Everyone, As you already know, we have been doing major work in terms of improving and refactoring the framework. We are buzzing and making changes everywhere and people are getting excited about helping out. This is fantastic! and I hope we can continue in this new direction. However, before we started the refactoring work, I kept wondering why did we get here in the first place? We do we have lots of bad and messy code in the code base? Why are we at point where we are shifting all energies to cleaning up? So as I started working with people on the refactoring project and the answers to the above questions started to slowly appear. I list below my perception of the problems and recommendations for avoiding repeating these problems of bad code. Problem: We are very conservative ---------------------------------------------- How many times did you hear this: "Don't remove that, somebody might need it" or "Oh no, you just made a regression in trunk" or "No keep it, _one_ person X objected". You know ... making software is difficult. It involves taking many decisions, some of these decisions might not appeal to every person but they are necessary for the health of the project. So here is where I observed conservative behavior: - We are too sensitive to objections that even _one_ person might stop an initiative. In a way we might be a little too nice. - We treat trunk like it is almost a stable branch, and for any serious change we immediately prefer to create branches. - We _rarely_ remove anything, and when we suggest removing things big resistance happens. We suffer from "code hoarding" - We are shy about changing other people's code. Shy not because we don't know what to do, but we are concerned about making those who wrote the software displeased. - We treat code written by others like it is holy and difficult and we cannot repeat, when in fact many times we can make it actually _better_! The above observations in my opinion are the main reasons why we have bad code. We just pile up and we are so afraid of change. We don't change anything and the code as a result suffers and deteriorates. We just pile things on top of other things and do not revisit the design and try to make it better and cleaner. Sometimes revisiting the design involves _DELETING_ which is a strange word in our community :) Recommendation: Shifting our mindset --------------------------------------------------- At a high level, we can say our problem is fear! How do we reduce and control fear? How do we gain confidence about making change without too much pain? Luckily many smart people already thought about these things and came up with wonderful solutions. I list hear recommendations which are inspired by these thinkers: - First we must be aware that we are conservative and accept it. We should be conscious of how apprehensive we are about change - We should have a very strong test coverage of our code and we should exercise Test Driver Development as a core philosophy in our programming methodology. Having very well tested code gives you confidence. Confidence gives you courage to change. - We should accept trunk as an _unstable software_. It is a place where all the brain storming and thinking and innovation is happening. - We should be open in expressing our opinions. Being correct is better than being nice. Mind you I'm not encouraging conflict! I am instead encouraging good technical discussions that lead to useful outcomes. It is only when people challenge your technical opinion that you really expand your horizons and learn something - For me personally, I think most importantly, we should accept _REMOVING_ and _DELETING_ things. This is a natural phenomenon in all software systems. Sometimes we create something and realize later that it was a bad idea. Just Delete it!! Don't keep it hanging forever. In conclusion ----------------- So OFBiz has a wonderful community and great people. However we are overly conservative, and we need to be a little more brave and willing to embrace change. Yes this will lead to some friction and at times feeling lost, but the long-term benefits far far outweigh the losses in my opinion. What do you think? I would love to hear everyone's opinion on this, and thank you again for being such supportive and wonderful people. Cheers :) Taher Alkhateeb --001a113f495eb03b430537c0d858--