CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Lessons learned from open source communities | by Audrey Tang 唐鳳 | Medium</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2016-01-09T00:46:05.867Z"/><meta data-rh="true" name="title" content="Lessons learned from open source communities | by Audrey Tang 唐鳳 | Medium"/><meta data-rh="true" property="og:title" content="Lessons learned from open source communities"/><meta data-rh="true" property="al:android:url" content="medium://p/32f5d8107e34"/><meta data-rh="true" property="al:ios:url" content="medium://p/32f5d8107e34"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="In Asian culture, a lot of us feel that communicating progress is a form of boasting, since we believe that “empty vessels make the most sound”; this, however, could not be further from the truth…"/><meta data-rh="true" property="og:description" content="Cache invalidation, Troll hugging, and Reactive functions."/><meta data-rh="true" property="og:url" content="https://medium.com/@audrey.tang/lessons-i-ve-learned-32f5d8107e34"/><meta data-rh="true" property="al:web:url" content="https://medium.com/@audrey.tang/lessons-i-ve-learned-32f5d8107e34"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fit:800/1*v8HKA2IlWfedKYqP1PIYEg.jpeg"/><meta data-rh="true" property="article:author" content="https://medium.com/@audrey.tang"/><meta data-rh="true" name="author" content="Audrey Tang 唐鳳"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Lessons learned from open source communities"/><meta data-rh="true" name="twitter:site" content="@Medium"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/32f5d8107e34"/><meta data-rh="true" property="twitter:description" content="Cache invalidation, Troll hugging, and Reactive functions."/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fit:800/1*v8HKA2IlWfedKYqP1PIYEg.jpeg"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:creator" content="@audreyt"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="12 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" rel="preconnect" href="https://glyph.medium.com" crossOrigin=""/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://medium.com/@audrey.tang"/><link data-rh="true" rel="canonical" href="https://medium.com/@audrey.tang/lessons-i-ve-learned-32f5d8107e34"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/32f5d8107e34"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1200\u002F1*v8HKA2IlWfedKYqP1PIYEg.jpeg"],"url":"https:\u002F\u002Fmedium.com\u002F@audrey.tang\u002Flessons-i-ve-learned-32f5d8107e34","dateCreated":"2016-01-07T15:55:01.755Z","datePublished":"2016-01-07T15:55:01.755Z","dateModified":"2018-06-08T22:04:17.953Z","headline":"Lessons learned from open source communities - Audrey Tang 唐鳳 - Medium","name":"Lessons learned from open source communities - Audrey Tang 唐鳳 - Medium","description":"In Asian culture, a lot of us feel that communicating progress is a form of boasting, since we believe that “empty vessels make the most sound”; this, however, could not be further from the truth…","identifier":"32f5d8107e34","author":{"@type":"Person","name":"Audrey Tang 唐鳳","url":"https:\u002F\u002Fmedium.com\u002F@audrey.tang"},"creator":["Audrey Tang 唐鳳"],"publisher":{"@type":"Organization","name":"Medium","url":"https:\u002F\u002Fmedium.com\u002F","logo":{"@type":"ImageObject","width":272,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:544\u002F7*V1_7XP4snlmqrc_0Njontw.png"}},"mainEntityOfPage":"https:\u002F\u002Fmedium.com\u002F@audrey.tang\u002Flessons-i-ve-learned-32f5d8107e34"}</script><style type="text/css" data-fela-rehydration="566" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="566" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{gap:16px}.ag{color:inherit}.ah{fill:inherit}.ai{font-size:inherit}.aj{border:inherit}.ak{font-family:inherit}.al{letter-spacing:inherit}.am{font-weight:inherit}.an{padding:0}.ao{margin:0}.ap{cursor:pointer}.aq:disabled{cursor:not-allowed}.ar:disabled{color:#6B6B6B}.as:disabled{fill:#6B6B6B}.av{width:auto}.aw path{fill:#242424}.ax{height:25px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{width:0}.cc{border-right:none}.cd{transition:width 300ms}.ce{flex:0 0 auto}.cf{padding:24px 0}.cg{flex-direction:column}.ch{gap:8px}.ci{transform:translateX(-240px)}.cj{transition:transform 300ms}.ck{position:fixed}.cl{text-align:left}.cm{color:#6B6B6B}.cp{padding:8px 24px}.cq{margin-left:16px}.cr{overflow:hidden}.cs{max-height:20px}.ct{text-overflow:ellipsis}.cu{display:-webkit-box}.cv{-webkit-line-clamp:1}.cw{-webkit-box-orient:vertical}.cx{word-break:break-all}.cz{list-style:none}.da{flex-shrink:0}.db{margin-left:8px}.dc{stroke:#242424}.dd{stroke-width:1.5}.de{stroke-linecap:round}.df{stroke-linejoin:round}.dg{padding:12px 24px 12px 64px}.dh{height:40px}.di{border-bottom:1px solid #E5E5E5}.dj{margin:8px 24px}.dk{width:24px}.dl{width:calc(100% - 240px)}.dm{flex:1 1 auto}.dn{justify-content:center}.dt{max-width:680px}.du{min-width:0}.dv{animation:k1 1.2s ease-in-out infinite}.dw{height:100vh}.dx{margin-bottom:16px}.dy{margin-top:48px}.dz{align-items:flex-start}.ea{justify-content:space-between}.eb{margin-bottom:24px}.eh{width:80%}.ei{background-color:#F2F2F2}.ep{height:44px}.eq{width:44px}.er{margin:auto 0}.es{margin-bottom:4px}.et{height:16px}.eu{width:120px}.ev{width:80px}.fb{margin-bottom:8px}.fc{width:96%}.fd{width:98%}.fe{width:81%}.ff{font-size:13px}.fg{height:100%}.fy{color:#FFFFFF}.fz{fill:#FFFFFF}.ga{background:#1A8917}.gb{border-color:#1A8917}.gf:disabled{cursor:inherit !important}.gg:disabled{opacity:0.3}.gh:disabled:hover{background:#1A8917}.gi:disabled:hover{border-color:#1A8917}.gj{border-radius:99em}.gk{border-width:1px}.gl{border-style:solid}.gm{box-sizing:border-box}.gn{text-decoration:none}.go{text-align:center}.gr{margin-right:32px}.gs{position:relative}.gt{fill:#6B6B6B}.gv{background:transparent}.gw svg{margin-left:4px}.gx svg{fill:#6B6B6B}.gz{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.ha{position:absolute}.hh{margin:0 24px}.hl{background:rgba(255, 255, 255, 1)}.hm{border:1px solid #F2F2F2}.hn{box-shadow:0 1px 4px #F2F2F2}.ho{max-height:100vh}.hp{overflow-y:auto}.hq{left:0}.hr{top:calc(100vh + 100px)}.hs{bottom:calc(100vh + 100px)}.ht{width:10px}.hu{pointer-events:none}.hv{word-break:break-word}.hw{word-wrap:break-word}.hx:after{display:block}.hy:after{content:""}.hz:after{clear:both}.ia{line-height:1.23}.ib{letter-spacing:0}.ic{font-style:normal}.id{font-weight:700}.iy{margin-bottom:-0.27em}.iz{line-height:1.394}.ju{align-items:baseline}.jv{width:48px}.jw{height:48px}.jx{border:2px solid rgba(255, 255, 255, 1)}.jy{z-index:0}.jz{box-shadow:none}.ka{border:1px solid rgba(0, 0, 0, 0.05)}.kb{margin-bottom:2px}.kc{flex-wrap:nowrap}.kd{font-size:16px}.ke{line-height:24px}.kg{margin:0 8px}.kh{display:inline}.ki{text-decoration:underline}.kl{flex-wrap:wrap}.km{padding-left:8px}.kn{padding-right:8px}.lo> *{flex-shrink:0}.lp{overflow-x:scroll}.lq::-webkit-scrollbar{display:none}.lr{scrollbar-width:none}.ls{-ms-overflow-style:none}.lt{width:74px}.lu{flex-direction:row}.lv{z-index:2}.lw{margin-right:4px}.lz{-webkit-user-select:none}.ma{border:0}.mb{fill:rgba(117, 117, 117, 1)}.me{outline:0}.mf{user-select:none}.mg> svg{pointer-events:none}.mp{cursor:progress}.mq{margin-left:4px}.mr{margin-top:0px}.ms{opacity:1}.mt{padding:4px 0}.mw{width:16px}.my{display:inline-flex}.ne{max-width:100%}.nf{padding:8px 2px}.ng svg{color:#6B6B6B}.nx{line-height:1.58}.ny{letter-spacing:-0.004em}.nz{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.os{margin-bottom:-0.46em}.ot{list-style-type:disc}.ou{margin-left:30px}.ov{padding-left:0px}.ow{font-style:italic}.pc{margin-left:auto}.pd{margin-right:auto}.pe{max-width:800px}.pk{clear:both}.pm{cursor:zoom-in}.pn{z-index:auto}.pp{height:auto}.pq{margin-top:10px}.pr{max-width:728px}.pu{margin-top:32px}.pv{margin-bottom:14px}.pw{padding-top:24px}.px{padding-bottom:10px}.py{background-color:#000000}.pz{height:3px}.qa{width:3px}.qb{margin-right:20px}.qc{max-width:325px}.qd{list-style-type:decimal}.qe{margin-bottom:40px}.qf{margin-top:6px}.qg{margin-top:8px}.qh{margin-right:8px}.qi{padding:8px 16px}.qj{border-radius:100px}.qk{transition:background 300ms ease}.qm{white-space:nowrap}.qn{margin-bottom:26px}.qo{border-top:none}.qp{margin-bottom:50px}.qq{height:52px}.qr{max-height:52px}.qs{box-sizing:content-box}.qt{position:static}.qu{z-index:1}.qw{max-width:155px}.rc{margin-bottom:64px}.rr{height:64px}.rs{width:64px}.rt{align-self:flex-end}.ru{color:rgba(255, 255, 255, 1)}.rv{fill:rgba(255, 255, 255, 1)}.rw{background:rgba(25, 25, 25, 1)}.rx{border-color:rgba(25, 25, 25, 1)}.sa:disabled{opacity:0.1}.sb:disabled:hover{background:rgba(25, 25, 25, 1)}.sc:disabled:hover{border-color:rgba(25, 25, 25, 1)}.si{padding-right:4px}.sj{font-weight:500}.sw{white-space:pre-wrap}.sx{margin-top:16px}.td{height:0px}.tr{gap:18px}.ts{fill:rgba(61, 61, 61, 1)}.tu{padding-bottom:20px}.tv{border-bottom:1px solid #F2F2F2}.ub{fill:#242424}.uc{background:0}.ud{border-color:#242424}.ue:disabled:hover{color:#242424}.uf:disabled:hover{fill:#242424}.ug:disabled:hover{border-color:#242424}.ur{border-bottom:solid 1px #E5E5E5}.us{margin-top:72px}.ut{margin-bottom:0px}.uu{margin-right:16px}.at:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.au:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.cn:hover{color:#242424}.co:hover p{color:#242424}.gc:hover{background:#156D12}.gd:hover{border-color:#156D12}.ge:hover{cursor:pointer}.gu:hover{fill:#242424}.gy:hover svg{fill:#242424}.hb:hover{background-color:rgba(0, 0, 0, 0.1)}.kf:hover{text-decoration:underline}.md:hover{fill:rgba(8, 8, 8, 1)}.mu:hover{fill:#000000}.mv:hover p{color:#000000}.mx:hover{color:#000000}.nh:hover svg{color:#000000}.ql:hover{background-color:#F2F2F2}.rq:hover{background-color:none}.ry:hover{background:#000000}.rz:hover{border-color:#242424}.tt:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.mc:focus{fill:rgba(8, 8, 8, 1)}.ni:focus svg{color:#000000}.po:focus{transform:scale(1.01)}.mh:active{border-style:none}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.ds{margin:0 64px}.eg{height:48px}.eo{margin-bottom:52px}.fa{margin-bottom:48px}.fp{font-size:14px}.fq{line-height:20px}.fw{font-size:13px}.fx{padding:5px 12px}.gq{display:flex}.hg{margin-bottom:50px}.hk{max-width:680px}.iu{font-size:42px}.iv{margin-top:1.19em}.iw{line-height:52px}.ix{letter-spacing:-0.011em}.jm{font-size:22px}.jn{margin-top:0.92em}.jo{line-height:28px}.jt{align-items:center}.la{border-top:solid 1px #F2F2F2}.lb{border-bottom:solid 1px #F2F2F2}.lc{margin:32px 0 0}.ld{padding:3px 8px}.lm> *{margin-right:24px}.ln> :last-child{margin-right:0}.mo{margin-top:0px}.nd{margin:0}.oo{font-size:20px}.op{margin-top:2.14em}.oq{line-height:32px}.or{letter-spacing:-0.003em}.pb{margin-top:1.14em}.pj{margin-top:56px}.rb{display:inline-block}.rd{flex-direction:row}.rg{margin-bottom:0}.rh{margin-right:20px}.sd{max-width:500px}.su{line-height:24px}.sv{letter-spacing:0}.tc{margin-bottom:88px}.to{font-size:24px}.tp{line-height:30px}.tq{letter-spacing:-0.016em}.ua{margin:40px 0 16px}.ul{width:min-width}.uq{padding-top:72px}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.mn{margin-top:0px}.ps{margin-left:auto}.pt{text-align:center}.ra{display:inline-block}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.mm{margin-top:0px}.qz{display:inline-block}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.mk{margin-top:0px}.ml{margin-right:0px}.qy{display:inline-block}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.do{margin:0 24px}.ec{height:40px}.ej{margin-bottom:44px}.ew{margin-bottom:32px}.fh{font-size:13px}.fi{line-height:20px}.fr{padding:0px 8px 1px}.hc{margin-bottom:2px}.ie{font-size:32px}.if{margin-top:1.01em}.ig{line-height:38px}.ih{letter-spacing:-0.014em}.ja{font-size:18px}.jb{margin-top:0.79em}.jc{line-height:24px}.jp{align-items:flex-start}.kj{flex-direction:column}.ko{margin:24px -24px 0}.kp{padding:0}.le> *{margin-right:8px}.lf> :last-child{margin-right:24px}.lx{margin-left:0px}.mi{margin-top:0px}.mj{margin-right:0px}.mz{margin:0}.nj{border:1px solid #F2F2F2}.nk{border-radius:99em}.nl{padding:0px 16px 0px 12px}.nm{height:38px}.nn{align-items:center}.np svg{margin-right:8px}.oa{margin-top:1.56em}.ob{line-height:28px}.oc{letter-spacing:-0.003em}.ox{margin-top:1.34em}.pf{margin-top:40px}.qx{display:inline-block}.ro{margin-bottom:20px}.rp{margin-right:0}.sh{max-width:100%}.sk{font-size:24px}.sl{line-height:30px}.sm{letter-spacing:-0.016em}.sy{margin-bottom:64px}.te{font-size:20px}.tf{letter-spacing:0}.tw{margin:32px 0 16px}.uh{width:100%}.um{padding-top:48px}.no:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.dr{margin:0 64px}.ef{height:48px}.em{margin-bottom:52px}.ez{margin-bottom:48px}.fn{font-size:14px}.fo{line-height:20px}.fu{font-size:13px}.fv{padding:5px 12px}.gp{display:flex}.hf{margin-bottom:50px}.hj{max-width:680px}.iq{font-size:42px}.ir{margin-top:1.19em}.is{line-height:52px}.it{letter-spacing:-0.011em}.jj{font-size:22px}.jk{margin-top:0.92em}.jl{line-height:28px}.js{align-items:center}.kw{border-top:solid 1px #F2F2F2}.kx{border-bottom:solid 1px #F2F2F2}.ky{margin:32px 0 0}.kz{padding:3px 8px}.lk> *{margin-right:24px}.ll> :last-child{margin-right:0}.nc{margin:0}.ok{font-size:20px}.ol{margin-top:2.14em}.om{line-height:32px}.on{letter-spacing:-0.003em}.pa{margin-top:1.14em}.pi{margin-top:56px}.re{flex-direction:row}.ri{margin-bottom:0}.rj{margin-right:20px}.se{max-width:500px}.ss{line-height:24px}.st{letter-spacing:0}.tb{margin-bottom:88px}.tl{font-size:24px}.tm{line-height:30px}.tn{letter-spacing:-0.016em}.tz{margin:40px 0 16px}.uk{width:min-width}.up{padding-top:72px}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.dq{margin:0 48px}.ee{height:48px}.el{margin-bottom:52px}.ey{margin-bottom:48px}.fl{font-size:13px}.fm{line-height:20px}.ft{padding:0px 8px 1px}.he{margin-bottom:50px}.hi{max-width:680px}.im{font-size:42px}.in{margin-top:1.19em}.io{line-height:52px}.ip{letter-spacing:-0.011em}.jg{font-size:22px}.jh{margin-top:0.92em}.ji{line-height:28px}.jr{align-items:center}.ks{border-top:solid 1px #F2F2F2}.kt{border-bottom:solid 1px #F2F2F2}.ku{margin:32px 0 0}.kv{padding:3px 8px}.li> *{margin-right:24px}.lj> :last-child{margin-right:0}.nb{margin:0}.og{font-size:20px}.oh{margin-top:2.14em}.oi{line-height:32px}.oj{letter-spacing:-0.003em}.oz{margin-top:1.14em}.ph{margin-top:56px}.rf{flex-direction:row}.rk{margin-bottom:0}.rl{margin-right:20px}.sf{max-width:500px}.sq{line-height:24px}.sr{letter-spacing:0}.ta{margin-bottom:88px}.ti{font-size:24px}.tj{line-height:30px}.tk{letter-spacing:-0.016em}.ty{margin:40px 0 16px}.uj{width:min-width}.uo{padding-top:72px}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.dp{margin:0 24px}.ed{height:40px}.ek{margin-bottom:44px}.ex{margin-bottom:32px}.fj{font-size:13px}.fk{line-height:20px}.fs{padding:0px 8px 1px}.hd{margin-bottom:2px}.ii{font-size:32px}.ij{margin-top:1.01em}.ik{line-height:38px}.il{letter-spacing:-0.014em}.jd{font-size:18px}.je{margin-top:0.79em}.jf{line-height:24px}.jq{align-items:flex-start}.kk{flex-direction:column}.kq{margin:24px 0 0}.kr{padding:0}.lg> *{margin-right:8px}.lh> :last-child{margin-right:8px}.ly{margin-left:0px}.na{margin:0}.nq{border:1px solid #F2F2F2}.nr{border-radius:99em}.ns{padding:0px 16px 0px 12px}.nt{height:38px}.nu{align-items:center}.nw svg{margin-right:8px}.od{margin-top:1.56em}.oe{line-height:28px}.of{letter-spacing:-0.003em}.oy{margin-top:1.34em}.pg{margin-top:40px}.rm{margin-bottom:20px}.rn{margin-right:0}.sg{max-width:100%}.sn{font-size:24px}.so{line-height:30px}.sp{letter-spacing:-0.016em}.sz{margin-bottom:64px}.tg{font-size:20px}.th{letter-spacing:0}.tx{margin:32px 0 16px}.ui{width:100%}.un{padding-top:48px}.nv:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="print">.qv{display:none}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.cy{max-height:none}</style><style type="text/css" data-fela-rehydration="566" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.pl{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="cm ah ff bf al b an ao ap aq ar as at au s u w i d q fg z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2F32f5d8107e34&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderUser&source=post_page---top_nav_layout_nav-----------------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="db"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b fh fi fj fk fl fm fn fo fp fq cm"><span><button class="bf b fh fi fr fj fk fs fl fm ft fu fo fv fw fq fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm bm gn go" data-testid="headerSignUpButton">Sign up</button></span></p><div class="cq l"><p class="bf b fh fi fj fk fl fm fn fo fp fq cm"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&source=post_page---top_nav_layout_nav-----------------------global_nav------------------">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae af"><a class="ag ah ai aj ak al am an ao ap aq ar as at au ab" aria-label="Homepage" data-testid="headerMediumLogo" rel="noopener follow" href="/?source=post_page---top_nav_layout_nav-----------------------------------------"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="av aw ax"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w gp gq"><div class="gr ab"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="headerWriteButton" rel="noopener follow" href="/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav------------------"><div class="bf b bg z cm gs gt ab q cn gu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="db l">Write</div></div></a></span></div></div><div class="k j i d"><div class="gr ab"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="headerSearchButton" rel="noopener follow" href="/search?source=post_page---top_nav_layout_nav-----------------------------------------"><div class="bf b bg z cm gs gt ab q cn gu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="gr h k j"><div class="ab q"><p class="bf b fh fi fj fk fl fm fn fo fp fq cm"><span><button class="bf b fh fi fr fj fk fs fl fm ft fu fo fv fw fq fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm bm gn go" data-testid="headerSignUpButton">Sign up</button></span></p><div class="cq l"><p class="bf b fh fi fj fk fl fm fn fo fp fq cm"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&source=post_page---top_nav_layout_nav-----------------------global_nav------------------">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay gv an ab q ap gw gx gy" aria-label="user options menu" data-testid="headerUserIcon"><div class="l gs"><img alt="" class="l gm by bz ca ei" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="gz by l bz ca ha n ay hb"></div></div></button></div></div></div><div class="ab"><div class="cb cc cd ce"><div class="ba cf ab cg ch ci cj ck"><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co cp"><div class="ab q"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Home"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.5 10.75v10.5c0 .138.112.25.25.25h5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v5.5c0 .138.112.25.25.25h5a.25.25 0 0 0 .25-.25v-10.5M22 9l-9.1-6.825a1.5 1.5 0 0 0-1.8 0L2 9"></path></svg><div class="cq l"><p class="bf b bg z cr cs ct cu cv cw cx cy cm">Home</p></div></div></div></a><details class="cr"><summary class="q ap ab cz bf b bg z cm cn co cp"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Lists"><path stroke="currentColor" d="M6.44 6.69a1.5 1.5 0 0 1 1.06-.44h9a1.5 1.5 0 0 1 1.06.44l.354-.354-.353.353A1.5 1.5 0 0 1 18 7.75v14l-5.694-4.396-.306-.236-.306.236L6 21.75v-14c0-.398.158-.78.44-1.06Z"></path><path stroke="currentColor" stroke-linecap="round" d="M12.5 2.75h-8a2 2 0 0 0-2 2v11.5"></path></svg><div class="cq l ae"><p class="bf b bg z cr cs ct cu cv cw cx cy cm">Library</p></div><div class="da db" style="transform:rotate(0deg"><svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" fill="none" viewBox="0 0 24 24" class="dc dd de df"><path d="m6 9 6 6 6-6"></path></svg></div></summary><div style="height:0"><div class="l"><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/me/lists?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co dg">Your lists</div></a><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/me/lists/saved?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co dg">Saved lists</div></a><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/me/list/highlights?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co dg">Highlights</div></a><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/me/lists/reading-history?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co dg">Reading history</div></a><div class="dh l"></div></div></div></details><div class="di dj dk l"></div><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/me/stories/drafts?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co cp"><div class="ab q"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Stories"><path stroke="currentColor" d="M4.75 21.5h14.5a.25.25 0 0 0 .25-.25V2.75a.25.25 0 0 0-.25-.25H4.75a.25.25 0 0 0-.25.25v18.5c0 .138.112.25.25.25Z"></path><path stroke="currentColor" stroke-linecap="round" d="M8 8.5h8M8 15.5h5M8 12h8"></path></svg><div class="cq l"><p class="bf b bg z cr cs ct cu cv cw cx cy cm">Stories</p></div></div></div></a><a class="ag ah ai ay ak al am an ao ap aq ar as at au bh cl" rel="noopener follow" href="/me/stats?source=post_page--------------------------------------------"><div class="bf b bg z cm cn co cp"><div class="ab q"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Stats"><path stroke="currentColor" d="M2.75 19h4.5a.25.25 0 0 0 .25-.25v-6.5a.25.25 0 0 0-.25-.25h-4.5a.25.25 0 0 0-.25.25v6.5c0 .138.112.25.25.25ZM9.75 19h4.5a.25.25 0 0 0 .25-.25V8.25a.25.25 0 0 0-.25-.25h-4.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25ZM16.75 19h4.5a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25h-4.5a.25.25 0 0 0-.25.25v14.5c0 .138.112.25.25.25Z"></path></svg><div class="cq l"><p class="bf b bg z cr cs ct cu cv cw cx cy cm">Stats</p></div></div></div></a></div></div><div class="dl l dm"><div class="l"><div class="hc hd he hf hg l"><div class="ab dn"><div class="du bh hh hi hj hk"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="ha hq hr hs ht hu"></div><div class="hv hw hx hy hz"><div class="ab dn"><div class="du bh hh hi hj hk"><div><h1 id="86e7" class="pw-post-title ia ib ic bf id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy bk" data-testid="storyTitle">Lessons learned from open source communities</h1></div><div><h2 id="b3a4" class="pw-subtitle-paragraph iz ib ic bf b ja jb jc jd je jf jg jh ji jj jk jl jm jn jo eb cm">Cache invalidation, Troll hugging, and Reactive functions.</h2><div><div class="speechify-ignore ab ea"><div class="speechify-ignore bh l"><div class="jp jq jr js jt ab"><div><div class="ab ju"><div><div class="bm" aria-hidden="false"><a rel="noopener follow" href="/@audrey.tang?source=post_page---byline--32f5d8107e34---------------------------------------"><div class="l jv jw by jx jy"><div class="l gs"><img alt="Audrey Tang 唐鳳" class="l gm by ep eq ei" src="https://miro.medium.com/v2/resize:fill:88:88/1*IwcxIJq1BrcMsEDsC1eRmA.jpeg" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="jz by l ep eq ha n ka hb"></div></div></div></a></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="kb ab q"><div class="ab q kc"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b kd ke bk"><a class="ag ah ai aj ak al am an ao ap aq ar as kf" data-testid="authorName" rel="noopener follow" href="/@audrey.tang?source=post_page---byline--32f5d8107e34---------------------------------------">Audrey Tang 唐鳳</a></p></div></div></div><span class="kg kh" aria-hidden="true"><span class="bf b bg z bk">·</span></span><p class="bf b kd ke bk"><span><a class="ag ah ai aj ak al am an ao ap aq ar as ki" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F44408f5e9c48&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&user=Audrey+Tang+%E5%94%90%E9%B3%B3&userId=44408f5e9c48&source=post_page-44408f5e9c48--byline--32f5d8107e34---------------------post_header------------------">Follow</a></span></p></div></div></span></div></div><div class="l ce"><span class="bf b bg z cm"><div class="ab dz kj kk kl"><span class="bf b bg z cm"><div class="ab ae"><span data-testid="storyReadTime">12 min read</span><div class="km kn l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z cm">·</span></span></div><span data-testid="storyPublishDate">Jan 7, 2016</span></div></span></div></span></div></div></div><div class="ab ea ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld"><div class="h k w gp gq q"><div class="lt l"><div class="ab q lu lv"><div class="pw-multi-vote-icon gs lw lx ly lz"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="headerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2F32f5d8107e34&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&user=Audrey+Tang+%E5%94%90%E9%B3%B3&userId=44408f5e9c48&source=---header_actions--32f5d8107e34---------------------clap_footer------------------"><div><div class="bm" aria-hidden="false"><div class="ma ap mb mc md me an mf mg mh lz"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mi mj mk ml mm mn mo"><p class="bf b ff z cm"><span class="mp">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ap ma ms mt ab q gt mu mv" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="mr"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b ff z cm"><span class="pw-responses-count mq mr">1</span></p></button></div></div></div><div class="ab q le lf lg lh li lj lk ll lm ln lo lp lq lr ls"><div class="mw k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="headerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F32f5d8107e34&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&source=---header_actions--32f5d8107e34---------------------bookmark_footer------------------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="cm mx" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="gm my dz"><div class="l ae"><div class="ab dn"><div class="mz na nb nc nd ne du bh"><div class="ab"><div class="bm" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="ag gt ai aj ak al am nf ao ap aq gg ng nh mv ni nj nk nl nm s nn no np nq nr ns nt u nu nv nw"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z cm">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="ag gt ai aj ak al am nf ao ap aq gg ng nh mv ni nj nk nl nm s nn no np nq nr ns nt u nu nv nw"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z cm">Share</p></div></button></div></div></div></div></div></div></div></div></div><p id="9a9f" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Be bold</strong></p><p id="c906" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">In Asian culture, a lot of us feel that communicating progress is a form of boasting, since we believe that “empty vessels make the most sound”; this, however, could not be further from the truth. Share your experiences with courage, as well as a thick skin. Say something foolish — on the Internet, the best way to get attention isn’t to ask questions, but to provide the wrong answers.</p><p id="1ae0" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">If you want the opportunity to learn new things, give the wrong answer to a problem; out of nowhere, experts will materialise and correct you. If you are not initially talking about an imperfect answer, however, no one will show up to say much about anything.</p><p id="db96" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">In the words of Leonard Cohen, “There is a crack in everything, that’s how the light gets in”. Without an imperfect sketch, there isn’t anything to inspire us to do better.</p><p id="cd40" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Searching and Asking</strong></p><p id="de73" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Another important point is to ask questions. The benefit of having a community is that you can find people and information through forums and chat rooms. When you are working on a new project, you want to put it all in an easy-to-remember Web domain. With the new crop of top-level domains, getting friendly URLs is much easier and cheaper than it used to be.</p><p id="c622" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Keywords are very important. The project “go,” for example, could not be found in search engines, so researchers had to invent a new keyword, “golang,” so that others on Google or in the Forum would be able to find the right place to be able to ask the right kind of people.</p><p id="b7c3" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Coming up with new names, of course, is a very difficult thing. There is a saying: “There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.”</p><p id="ccb0" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">RTFM Considered Harmful</strong></p><p id="3fb2" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">So when someone asks you questions, when they finally find you through keywords, you can seriously respond, instead of coldly saying, “Read The Fine Manual.”</p><p id="30db" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Saying RTFM is like saying, “Do not deal with people — deal with books instead.” But this way is unproductive because it blocks what we call our social objects. In contrast to RTFM, someone can ask a question, meet new people through answers, learn things through their answers, and again meet new people when offering this answer to others, continuing the loop.</p><p id="99ea" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">If you cut this chain of souls, saying to someone, “Your step to me is the last step — go back and read the manual,” then their journey of joining the open source process is blocked, and they must find a new upstream before they can continue. So please don’t ever do that. Rather, help a person go down this road together. You can walk this road together much longer and go much farther.</p><p id="53c9" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Warm Reception</strong></p><p id="64d9" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Sometimes such mutual support and community is viewed as a clique, a coterie, and so on. But, don’t look down on cliques — when it comes climbing with a group of people in the cold of the mountains, a close group around the campfire can be the most basic need. This is essential, especially for the novice who climbs for the first time — in psychology, we call that the Basic Assumption Group.</p><p id="cc77" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Only when the need of closely-knit supports is present will people be able to form a Working Group, which does the real work of climbing higher peaks. Especially for the novice, such a closely-knit support circle is indispensable.</p><p id="3243" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Now I want to talk about how to offer constructive criticism. Although we just said individuals need to be open-minded regarding the varying development of others, under specific circumstances it is possible that other people’s brains contain cached information that has expired. At this time, we still need to offer criticism, asking others to clear their cache.</p><p id="6dfb" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">This time the focus is having a friendly attitude — to find at least one common ground that both parties agree upon. They may make ten claims, nine of which you think are wrong, but you still can respond to the one with which you agree: “I think you are talking about one thing that is right, but circumstances have changed for those nine other things.”</p><p id="053b" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Cache Invalidation</strong></p><p id="8fb8" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">We can take a very practical example. After a big earthquake in Nepal, more than 2,000 mappers from all over the world helped in the humanitarian OpenStreetMap team effort to create a street map around Kathmandu. Within 72 hours, they had mapped hundreds of thousands of roads and buildings based on satellite images.</p><p id="2121" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">In Taiwan, a civic hacker, Billy Lin, wrote an instructional article that called for novices to join OpenStreetMap and spend maybe half an hour learning to help with the Nepal mapping effort. Coincidentally, our president-to-be, Tsai, shared Billy’s call for help, resulting in an influx of interest.</p><p id="4fca" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">At this time, the media was interviewing T.H. Schee, who had helped in the Typhoon Morakot relief effort and is an expert on crowd-disaster relief. He said that this is not always a good situation because in disasters, resources are very precious. A sudden influx of thousands or tens of thousands of people rallying together can overwhelm server resources, leading to a system breakdown. Instead, he thinks the priority should be reserved for the professional OpenStreetMap community, not for newbies.</p><p id="a0f5" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">When I communicated with T.H., I began by noting first that his concerns are certainly valid; this was especially true in 2008 when Elastic Storage was new to the scene. Seven years ago, if there was an influx of new contributors, there was no fast way to absorb them; but today we have auto-scaled elastic servers and machine-learning or peer-view systems in place to validate new contributions.</p><p id="e486" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">While T.H.’s concerns may have been important and valid back in that time, now the situation is different. Still, it’s necessary to adopt a friendly approach to communication. Subsequently, T.H. checked the mailing list and found that it was not the same as before, so he also publicly corrected this. However, the key here is to first agree on the concepts behind his ideas, although there may be some preconceptions that have since expired, so we just need to clear the cache.</p><p id="1877" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Troll Hugging</strong></p><p id="c3cf" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Of course, not everyone will respond this gracefully to such communication; many others react negatively, so being thick-skinned is good. Perhaps someone writes 100 words, and 95 words are ad hominem attacks, and only 5 words have redeeming quality. From this point of view, you might as well ignore those 95 words, and instead politely and sincerely respond to the 5 words.</p><p id="ff9d" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Here is a concept I proposed called “Troll Hugging”. As long as someone comes across as disruptive, I do something to keep talking until they stop. This is my personal interest — not to say everyone here needs to cultivate this hobby.</p><p id="61be" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Specifically, how does that work? If someone types ten statements, nine of which are trolling, you can still respond to one single non-trolling statement in a sincere manner (and even that one line is trolling, but you can interpret it in a non-trolling fashion). Then, the person will learn that the nine trolling statements had no effect, as they received no response, but the other one statement was meaningful.</p><p id="0a27" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Trolls, in fact, are usually just people craving attention; by understanding what is constructive and merits attention, we can encourage participation and make contributions in a constructive way in order to get attention. In that case, they will be more likely to become a part of the community.</p><p id="3b98" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Reactive Functions</strong></p><p id="4c29" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Here, listening is very important. Sometimes during a ‘flame war,’ if one side stops and says, “For the next two hours, I will quit talking and listen to you,” there suddenly is no war anymore. Often, we are caught in the heat of the moment; every 30 seconds, we can’t resist the urge to type, “Hey, this sentence you said is wrong,” but they have not yet finished typing. So it is important to sit quietly and let the other person speak their mind.</p><p id="cbf3" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Reactive here means not rushing to say something, instead giving the other person your full, complete, listening attention; this is called active listening. There is an easy mnemonic for this technique.</p><p id="1d38" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">We may know that there is a protocol called HTTP, which is the way browsers communicate with Web servers. When a browser talks with the server, the server can respond with five different kinds of codes. When we are in active listening, we try to take only the first three kinds, and ignore the 4th and 5th kinds of responses.</p><p id="023c" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Specifically speaking, when someone is telling you something, you can offer them three kinds of responses:</p><ul class=""><li id="976b" class="nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov bk">100, please continue to speak;<br/><em class="ow">101, I don’t understand, can you speak a common language?</em></li><li id="ed23" class="nx ny ic nz b ja ox ob oc jd oy oe of og oz oi oj ok pa om on oo pb oq or os ot ou ov bk">200, I heard you;<br/><em class="ow">201, I heard you, and here’s what I think you meant.</em></li><li id="2782" class="nx ny ic nz b ja ox ob oc jd oy oe of og oz oi oj ok pa om on oo pb oq or os ot ou ov bk">300, there are lots of different communities for this topic, you can try to approach any of them;<br/><em class="ow">301, I suggest you find another person with whom to discuss this.</em></li></ul><p id="d563" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">It’s great up to this point. Avoid 400, which is saying, “You are wrong, this is your fault,” or 500, which is saying, “Oh, I’m sorry, it was my fault.” Okay?</p><p id="7765" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">So, the point is to avoid 400 and 500 — don’t rush to identify blame in the situation.</p><p id="8f8f" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Empathy</strong></p><p id="6a2c" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Sometimes say, “Yes, please go ahead,” sometimes say, “I understand, make sure I heard the meaning,” and sometimes say, “There are some people we need to consult.” Then, when the other person finishes what they have to say, there is no fire in the flame war anymore; this is a fundamental demonstration of empathy.</p><p id="bc8a" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">By looking at others’ statements this way, you’re making moves to put yourself in their shoes and gradually learning about their character. Anyone’s activities in the open source community leaves footprints, meaning we can trace back their words, their comments, and so on, seeing a new worldview from that other person’s point of view.</p><p id="4fa8" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">No One is an Island</strong></p><p id="d6a2" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Characteristics of the open source community, its solidarity as sociologist Gilles Deleuze described in the book “A Thousand Plateaus,” are of the Rhizome model. Think about plants like ginger, with organic growth in various directions, self-organized, and wherever it breaks it may sprout in the broken point; where there are vacancies, a new community springs forth. Communities keep pushing forward in all directions based on this idea.</p><p id="7817" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">The point is, regardless of how brilliant you are in a field — a so-called “demigod”, even — it is still important to remain humble because only with a humble attitude can we welcome others with different skillsets to join the project. Otherwise, it’s like saying, “I don’t need you; I can do things my way.” Such an isolated attitude cannot help us connect with new contributors.</p><p id="5f36" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Worse is Better</strong></p><p id="5018" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">There is a formula called Worse is Better, which I translated to Chinese as 劣即是夯. In short, it means “Do not be afraid of ‘losing face.’” No matter how bad something is at first — such as JavaScript — in the end it becomes the most popular language, so you should not be afraid of initially losing face. Throwing out an ugly version is fine.</p><figure class="pf pg ph pi pj pk pc pd paragraph-image"><div role="button" tabindex="0" class="pl pm gs pn bh po"><div class="pc pd pe"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 640w, https://miro.medium.com/v2/resize:fit:720/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 720w, https://miro.medium.com/v2/resize:fit:750/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 750w, https://miro.medium.com/v2/resize:fit:786/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 786w, https://miro.medium.com/v2/resize:fit:828/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 828w, https://miro.medium.com/v2/resize:fit:1100/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 1100w, https://miro.medium.com/v2/resize:fit:1400/1*v8HKA2IlWfedKYqP1PIYEg.jpeg 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh ne pp c" width="700" height="525" loading="lazy" role="presentation"/></picture></div></div><figcaption class="pq go pr pc pd ps pt bf b bg z cm">Three iterations of the gov-zero logo.</figcaption></figure><p id="374d" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">The leftmost logo was designed by two great programmers who are, however, not great at designing logos.</p><p id="cccd" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">That logo was displayed in the 0th gov-zero hackathon, where the designer Even Wu saw it and became rather troubled; this is known as “one who cares, suffers” —Wu was compelled to improve the design; otherwise his day would have been ruined.</p><p id="4798" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">So as long as the first initiator is not afraid of losing face, better improvements will surely appear.</p><p id="105d" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Safe Space</strong></p><p id="6426" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Here we emphasize the cultural concept of intersectionality, which means that each person is in a social class, status, ethnicity, gender identity and orientation — maybe we are privileged in some aspects, and in minority positions for others. Using our own experiences in vulnerable positions, we can empathize with people in the minority; you can put yourself in their shoes, fostering genuine solidarity.</p><p id="44fc" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">In the past few years, we are encouraging conferences to adopt Codes of Conduct to set norms for participation. As no Code is universally applicable, we encourage conference organizers to consider and imagine that participants come to learn things; then commentary on body shapes, skin color, and sexy pictures are perhaps unwelcomed distractions. If they are indeed distractions, maybe we can agree beforehand not to avoid perpetuating those commentaries. This way, everyone can have a safe space to learn together.</p><p id="2fb4" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Solidarity & Diversity</strong></p><p id="c4c6" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Just as there are different cultures, like Perl, Ruby, and PHP, all these communities have their own unique methods of operation, and it’s important that we are able to humbly communicate with each other —that’s the only way to learn from each other.</p><p id="bf4a" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">During apartheid in South Africa, blacks and whites didn’t speak to each other, but if you ask Obama now, is he white or black? People in the audience, are you white or black? The concept of diversity is not to divide people into binary groups, like programmers and non-programmers.</p><p id="55be" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">By contrast, if there are 1000 people here, then there are 1000 kinds of people here. Only in this context is authentic communication possible, so we can understand each other, rather than labeling each other.</p><p id="a737" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Self Governance</strong></p><p id="3417" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Open source folks, of course, likes to have fun, but also has the responsibility, on a personal level, to practice techniques such as Pomodoro Technique and Inbox Zero, which help to keep promises on things we agreed to work on.</p><p id="7568" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">At the community level, it’s important to be as transparent as possible in the decision-making process. Why transparency? Because in life there are so many things outside of the community, and maybe one day you can’t take so much responsibility anymore.</p><p id="82f4" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Delegation over Inheritance</strong></p><p id="b5a0" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">When we write programs, we know that <em class="ow">inheritance </em>— in the sense of “abruptly leaving a legacy to be inherited” is seldom a good idea; we should instead focus on <em class="ow">delegation</em>, gradually passing the baton through a modular approach, enabling a collaborative, community-based approach to the project.</p><p id="e025" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">This is a natural element of the project cycle, because open source is not a zero-sum game; there is no risk of “losing the race at the starting line.” As long as you make sure that the person picking up the baton can run toward their own direction, then <em class="ow">they have won the race already</em> —by deciding on a goal of their own.</p><p id="6e21" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Shared Memory</strong></p><p id="899b" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Eventually, the only thing that remains is how we live on in each other’s minds.</p><p id="a5e5" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Deserts Xuan has a lyric that says, “Time soars away, we’re not beside each other, but within each other.” In this era of the social Web, we are each other’s horcruxes, embedding our soul shards through work that lives in each other’s minds.</p><p id="13b1" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">I may have left Perl 6 development for a long time, but the community still keeps the culture alive, and together a production-ready Perl 6 release was delivered on Christmas 2015 — in the spirit of <em class="ow">Optimizing for Fun.</em></p><figure class="pf pg ph pi pj pk pc pd paragraph-image"><div role="button" tabindex="0" class="pl pm gs pn bh po"><div class="pc pd pe"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*_bvPwhWMM4TixHJu.jpg 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*_bvPwhWMM4TixHJu.jpg 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*_bvPwhWMM4TixHJu.jpg 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*_bvPwhWMM4TixHJu.jpg 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*_bvPwhWMM4TixHJu.jpg 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*_bvPwhWMM4TixHJu.jpg 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*_bvPwhWMM4TixHJu.jpg 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*_bvPwhWMM4TixHJu.jpg 640w, https://miro.medium.com/v2/resize:fit:720/0*_bvPwhWMM4TixHJu.jpg 720w, https://miro.medium.com/v2/resize:fit:750/0*_bvPwhWMM4TixHJu.jpg 750w, https://miro.medium.com/v2/resize:fit:786/0*_bvPwhWMM4TixHJu.jpg 786w, https://miro.medium.com/v2/resize:fit:828/0*_bvPwhWMM4TixHJu.jpg 828w, https://miro.medium.com/v2/resize:fit:1100/0*_bvPwhWMM4TixHJu.jpg 1100w, https://miro.medium.com/v2/resize:fit:1400/0*_bvPwhWMM4TixHJu.jpg 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh ne pp c" width="700" height="525" loading="lazy" role="presentation"/></picture></div></div><figcaption class="pq go pr pc pd ps pt bf b bg z cm">This <a class="ag ki" href="https://www.flickr.com/photos/lorenkerns/8645901176/in/photolist-eb1vcE-uXoMA-82MrnG-5SxMoj-cwZS9m-6vxamD-okcLWp-eqauLd-4wYRKL-4jkdvP-8nZxQ-u2s93-7D88AH-4fFcj6-kfYwKJ-8tWmjs-bX1cRk-e5Zxe-4djKY-3k7GK-nCQ9zg-4yB2xT-eqTPrw-51ZL2c-oPHfyE-m6L6Rg-5kGSfZ-9BhVru-445jH-5sj2wG-aaYNVK-oekd42-obcWAM-bWdXxv-o2cipA-cakiHL-4gmTXw-aCVHHK-7DZrYN-9RaXeZ-6tQchF-eoZV3A-7qLvKM-5kGSga-83rjzE-w2p3U-nbFyH8-5EhDg2-cBRRnA-aMH1e4" rel="noopener ugc nofollow" target="_blank">picture</a> contains the four main elements of “optimizing for fun”: a stable support, a safe space, unconstrained activities, and finally, new ways of looking at the world.</figcaption></figure><p id="5e31" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><strong class="nz id">Ars Longa!</strong></p><p id="dae8" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Projects are like the pyramids — the community may see the pyramids from a distance, and then gather around the pyramids to form a bazaar, where we find each other, and learn from each other.</p><p id="b4ee" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">A website exists for a time, of course, and open source is for a lifetime.</p><p id="ea73" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">A lifetime is not long, however; life is like a rainbow, emerged and borrowed from nature.</p><p id="026d" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Others who see the rainbow may be touched by it; people touched this way are inspired to make new creations, and the creation can move more people, which is how culture becomes endless and brings us continuous delight.</p></div></div></div><div class="ab dn pu pv pw px" role="separator"><span class="py by bm pz qa qb"></span><span class="py by bm pz qa qb"></span><span class="py by bm pz qa"></span></div><div class="hv hw hx hy hz"><div class="ab dn"><div class="du bh hh hi hj hk"><figure class="pf pg ph pi pj pk pc pd paragraph-image"><div class="pc pd qc"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 1100w, https://miro.medium.com/v2/resize:fit:650/format:webp/1*zzvdRmHGGXONZpuQ2FeqsQ.png 650w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 325px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*zzvdRmHGGXONZpuQ2FeqsQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*zzvdRmHGGXONZpuQ2FeqsQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*zzvdRmHGGXONZpuQ2FeqsQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*zzvdRmHGGXONZpuQ2FeqsQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*zzvdRmHGGXONZpuQ2FeqsQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*zzvdRmHGGXONZpuQ2FeqsQ.png 1100w, https://miro.medium.com/v2/resize:fit:650/1*zzvdRmHGGXONZpuQ2FeqsQ.png 650w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 325px"/><img alt="" class="bh ne pp c" width="325" height="325" loading="eager" role="presentation"/></picture></div><figcaption class="pq go pr pc pd ps pt bf b bg z cm">The logo of Git. It shows we are linked in solidarity, and also connected to the external world.</figcaption></figure><p id="583c" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Finally, when I was learning Git myself, this is how I learned its commands:</p><ol class=""><li id="9693" class="nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os qd ou ov bk"><strong class="nz id">Fetch</strong> new facts as they arise — <em class="ow">accept</em> <em class="ow">it.</em></li><li id="0636" class="nx ny ic nz b ja ox ob oc jd oy oe of og oz oi oj ok pa om on oo pb oq or os qd ou ov bk"><strong class="nz id">Merge</strong> with your existing understanding — <em class="ow">face</em> <em class="ow">it.</em><br/>Conflicts may arise here; we just need to resolve them.</li><li id="237f" class="nx ny ic nz b ja ox ob oc jd oy oe of og oz oi oj ok pa om on oo pb oq or os qd ou ov bk"><strong class="nz id">Commit</strong> to an action — <em class="ow">deal with</em> <em class="ow">it.</em></li><li id="d0a5" class="nx ny ic nz b ja ox ob oc jd oy oe of og oz oi oj ok pa om on oo pb oq or os qd ou ov bk"><strong class="nz id">Push</strong> it to the world — <em class="ow">let go of it.</em></li></ol><p id="ba73" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Why “let it go?” Because after you push out open source code to the world, it’s no longer yours.</p><p id="19f0" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">Open source means that anyone can take the code, and run with it toward a new creative direction. We need to avoid obsessing over the ownership of our work.</p></div></div></div><div class="ab dn pu pv pw px" role="separator"><span class="py by bm pz qa qb"></span><span class="py by bm pz qa qb"></span><span class="py by bm pz qa"></span></div><div class="hv hw hx hy hz"><div class="ab dn"><div class="du bh hh hi hj hk"><p id="343c" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk">These are the lessons that I have learned from open source communities. Thank you.</p><p id="ed79" class="pw-post-body-paragraph nx ny ic nz b ja oa ob oc jd od oe of og oh oi oj ok ol om on oo op oq or os hv bk"><em class="ow">(Source: CC0 1.0 </em><a class="ag ki" href="https://hackpad.com/C7vQilFOSGD" rel="noopener ugc nofollow" target="_blank"><em class="ow">https://hackpad.com/C7vQilFOSGD</em></a><em class="ow">)</em></p></div></div></div></div></section></div></div></article></div><div class="ab dn"><div class="du bh hh hi hj hk"><div class="qe qf ab kl"><div class="qg ab"><a class="qh ay an ap" rel="noopener follow" href="/tag/open-source?source=post_page-----32f5d8107e34---------------------------------------"><div class="qi gs ei qj hm qk ql bf b bg z bk qm">Open Source</div></a></div><div class="qg ab"><a class="qh ay an ap" rel="noopener follow" href="/tag/community?source=post_page-----32f5d8107e34---------------------------------------"><div class="qi gs ei qj hm qk ql bf b bg z bk qm">Community</div></a></div><div class="qg ab"><a class="qh ay an ap" rel="noopener follow" href="/tag/enlightenment?source=post_page-----32f5d8107e34---------------------------------------"><div class="qi gs ei qj hm qk ql bf b bg z bk qm">Enlightenment</div></a></div></div><div class="qn mr l"><div class="kh"><div class="bm"><p class="bf b bg z cm"><div><div class="bm" aria-hidden="false"><a class="ag ah ai aj ak al am an ao ap aq ar as kf" href="http://creativecommons.org/publicdomain/zero/1.0/" rel="noopener follow" target="_blank">No rights reserved</a></div></div></p></div><div class="bm"><p class="bf b bg z cm"><span> by the author.</span><span class="gt" style="margin-left:5px;vertical-align:text-bottom"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21"><g fill-rule="evenodd"><path d="M10.5 5.682c-2.763 0-3.458 2.608-3.458 4.818s.695 4.818 3.458 4.818 3.458-2.607 3.458-4.818-.695-4.818-3.458-4.818m0 1.817c.112 0 .215.01.31.04.2.17.297.4.106.73l-1.84 3.38a9 9 0 0 1-.065-1.16c0-.98.07-3 1.49-3zm1.377 1.55c.098.52.112 1.06.112 1.44 0 .97-.07 3-1.49 3-.11 0-.22-.01-.31-.04l-.06-.02-.09-.03c-.32-.14-.52-.38-.23-.81l2.06-3.55z"></path><path d="M10.482 2c-2.358 0-4.345.82-5.964 2.47a8.6 8.6 0 0 0-1.88 2.798A8.4 8.4 0 0 0 2 10.5q0 1.7.637 3.232a8.6 8.6 0 0 0 1.85 2.762 8.8 8.8 0 0 0 2.763 1.87 8.4 8.4 0 0 0 3.232.636c1.124 0 2.216-.22 3.268-.655a8.7 8.7 0 0 0 2.82-1.88 7.7 7.7 0 0 0 1.81-2.685A8.6 8.6 0 0 0 19 10.5a8.6 8.6 0 0 0-.62-3.268 8.1 8.1 0 0 0-1.82-2.744C14.89 2.828 12.86 2 10.482 2m.036 1.53c1.922 0 3.562.68 4.928 2.047a6.8 6.8 0 0 1 1.506 2.25 7 7 0 0 1 .518 2.673c0 1.954-.668 3.574-1.994 4.87a7.3 7.3 0 0 1-2.32 1.535 6.92 6.92 0 0 1-5.281.012 7.2 7.2 0 0 1-2.262-1.518 7.3 7.3 0 0 1-1.548-2.27 6.8 6.8 0 0 1 0-5.29c.365-.85.88-1.62 1.548-2.29 1.325-1.35 2.962-2.03 4.905-2.03z"></path></g></svg></span></p></div></div></div></div></div><div class="l"></div><footer class="qo qp qq qr qs ab q qt qu c"><div class="l ae"><div class="ab dn"><div class="du bh hh hi hj hk"><div class="ab ea qv"><div class="ab q lu"><div class="qw l"><span class="l qx qy qz e d"><div class="ab q lu lv"><div class="pw-multi-vote-icon gs lw lx ly lz"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2F32f5d8107e34&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&user=Audrey+Tang+%E5%94%90%E9%B3%B3&userId=44408f5e9c48&source=---footer_actions--32f5d8107e34---------------------clap_footer------------------"><div><div class="bm" aria-hidden="false"><div class="ma ap mb mc md me an mf mg mh lz"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mi mj mk ml mm mn mo"><p class="bf b ff z cm"><span class="mp">--</span></p></div></div></span><span class="l h g f ra rb"><div class="ab q lu lv"><div class="pw-multi-vote-icon gs lw lx ly lz"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2F32f5d8107e34&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&user=Audrey+Tang+%E5%94%90%E9%B3%B3&userId=44408f5e9c48&source=---footer_actions--32f5d8107e34---------------------clap_footer------------------"><div><div class="bm" aria-hidden="false"><div class="ma ap mb mc md me an mf mg mh lz"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mi mj mk ml mm mn mo"><p class="bf b ff z cm"><span class="mp">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ap ma ms mt ab q gt mu mv" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="mr"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b bg z cm"><span class="pw-responses-count mq mr">1</span></p></button></div></div></div></div><div class="ab q"><div class="qb l ce"><div><div class="bm" aria-hidden="false"><span><a class="ag ah ai aj ak al am an ao ap aq ar as at au" data-testid="footerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F32f5d8107e34&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40audrey.tang%2Flessons-i-ve-learned-32f5d8107e34&source=---footer_actions--32f5d8107e34---------------------bookmark_footer------------------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="cm mx" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="qb l ce"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="ag gt ai aj ak al am nf ao ap aq gg ng nh mv ni"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="rc l"><div class="ab dn"><div class="du bh hh hi hj hk"><div class="ab rd re rf kk kj"><div class="rg rh ri rj rk rl rm rn ro rp ab ea"><div class="h k"><a tabindex="0" rel="noopener follow" href="/@audrey.tang?source=post_page---post_author_info--32f5d8107e34---------------------------------------"><div class="l gs"><img alt="Audrey Tang 唐鳳" class="l gm by jw jv ei" src="https://miro.medium.com/v2/resize:fill:96:96/1*IwcxIJq1BrcMsEDsC1eRmA.jpeg" width="48" height="48" loading="lazy"/><div class="gz by l jw jv ha n ay rq"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@audrey.tang?source=post_page---post_author_info--32f5d8107e34---------------------------------------"><div class="l gs"><img alt="Audrey Tang 唐鳳" class="l gm by rr rs ei" src="https://miro.medium.com/v2/resize:fill:128:128/1*IwcxIJq1BrcMsEDsC1eRmA.jpeg" width="64" height="64" loading="lazy"/><div class="gz by l rr rs ha n ay rq"></div></div></a></div><div class="j i d rt ce"><div class="ab"><span><button class="bf b bg z ru qi rv rw rx ry rz ge gf sa sb sc gj gk gl gm bm gn go">Follow</button></span></div></div></div><div class="ab cg dm"><div class="sd se sf sg sh l"><a class="ag ah ai ak al am an ao ap aq ar as at au ab q" rel="noopener follow" href="/@audrey.tang?source=post_page---post_author_info--32f5d8107e34---------------------------------------"><h2 class="pw-author-name bf sj sk sl sm sn so sp og sq sr ok ss st oo su sv bk"><span class="hv si">Written by <!-- -->Audrey Tang 唐鳳</span></h2></a><div class="qg ab ju"><div class="l ce"><span class="pw-follower-count bf b bg z cm"><a class="ag ah ai aj ak al am an ao ap aq ar as kf" rel="noopener follow" href="/@audrey.tang/followers?source=post_page---post_author_info--32f5d8107e34---------------------------------------">3.5K Followers</a></span></div><div class="bf b bg z cm ab sw"><span class="kg l" aria-hidden="true"><span class="bf b bg z cm">·</span></span><a class="ag ah ai aj ak al am an ao ap aq ar as kf" rel="noopener follow" href="/@audrey.tang/following?source=post_page---post_author_info--32f5d8107e34---------------------------------------">383 Following</a></div></div><div class="sx l"><p class="bf b bg z bk"><span class="hv">Digital Minister @ Taiwan.</span></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z ru qi rv rw rx ry rz ge gf sa sb sc gj gk gl gm bm gn go">Follow</button></span></div></div></div></div></div></div><div class="sy sz ta tb tc l"><div class="td bh r rc"></div><div class="ab dn"><div class="du bh hh hi hj hk"><div class="ab q ea"><h2 class="bf sj te jc tf tg jf th ti tj tk tl tm tn to tp tq bk">Responses (<!-- -->1<!-- -->)</h2><div class="ab tr"><div><div class="bm" aria-hidden="false"><a class="ts tt" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--32f5d8107e34---------------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div><div class="tu tv tw tx ty tz ua l"></div><div class="pu l"><button class="bf b bg z bk qi ub uc ud mx mu rz ge gf gg ue uf ug gj uh ui uj uk ul gk gl gm bm gn go">See all responses</button></div></div></div></div><div class="um un uo up uq l bx"><div class="h k j"><div class="td bh ur us"></div><div class="ab dn"><div class="du bh hh hi hj hk"><div class="cf ab lu kl"><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://help.medium.com/hc/en-us?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Help</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://medium.statuspage.io/?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Status</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" rel="noopener follow" href="/about?autoplay=1&source=post_page-----32f5d8107e34---------------------------------------"><p class="bf b ff z cm">About</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" rel="noopener follow" href="/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----32f5d8107e34---------------------------------------"><p class="bf b ff z cm">Careers</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="mailto:pressinquiries@medium.com" rel="noopener follow"><p class="bf b ff z cm">Press</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://blog.medium.com/?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Blog</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Privacy</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Rules</p></a></div><div class="ut uu l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Terms</p></a></div><div class="ut l"><a class="ag ah ai aj ak al am an ao ap aq ar as at au" href="https://speechify.com/medium?source=post_page-----32f5d8107e34---------------------------------------" rel="noopener follow"><p class="bf b ff z cm">Text to speech</p></a></div></div></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20250326-204812-01142a1d30"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"","group":"enabled","tags":["group-edgeCachePosts","post-32f5d8107e34","user-44408f5e9c48"],"serverVariantState":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a","middlewareEnabled":true,"cacheStatus":"DYNAMIC","shouldUseCache":true,"vary":[],"pubFeaturingPostPageLabelEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"f8212fe6-3b74-4ebe-9180-6208e55f1891","requestTag":"","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-a6a96ed1e36c7b4b1abe86a666828232-8c8cc48dbafdf17a-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002F@audrey.tang\u002Flessons-i-ve-learned-32f5d8107e34","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"","currentHash":""},"config":{"nodeEnv":"production","version":"main-20250326-204812-01142a1d30","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20250326-204812-01142a1d30","commit":"01142a1d3088f3457c3fccb09b3a167d25a322e9"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"medium.com\"})":null,"postResult({\"id\":\"32f5d8107e34\"})":{"__ref":"Post:32f5d8107e34"}},"LinkedAccounts:44408f5e9c48":{"__typename":"LinkedAccounts","mastodon":null,"id":"44408f5e9c48"},"User:44408f5e9c48":{"__typename":"User","id":"44408f5e9c48","linkedAccounts":{"__ref":"LinkedAccounts:44408f5e9c48"},"isSuspended":false,"name":"Audrey Tang 唐鳳","imageId":"1*IwcxIJq1BrcMsEDsC1eRmA.jpeg","customDomainState":null,"hasSubdomain":false,"username":"audrey.tang","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":3524,"followingCount":382,"collectionFollowingCount":1},"bio":"Digital Minister @ Taiwan.","membership":null,"allowNotes":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:44408f5e9c48-viewerId:lo_fcdac3868c3d"},"twitterScreenName":"audreyt"},"Paragraph:fbed0e961232_0":{"__typename":"Paragraph","id":"fbed0e961232_0","name":"86e7","type":"H3","href":null,"layout":null,"metadata":null,"text":"Lessons learned from open source communities","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_1":{"__typename":"Paragraph","id":"fbed0e961232_1","name":"b3a4","type":"H4","href":null,"layout":null,"metadata":null,"text":"Cache invalidation, Troll hugging, and Reactive functions.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_2":{"__typename":"Paragraph","id":"fbed0e961232_2","name":"9a9f","type":"P","href":null,"layout":null,"metadata":null,"text":"Be bold","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":7,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_3":{"__typename":"Paragraph","id":"fbed0e961232_3","name":"c906","type":"P","href":null,"layout":null,"metadata":null,"text":"In Asian culture, a lot of us feel that communicating progress is a form of boasting, since we believe that “empty vessels make the most sound”; this, however, could not be further from the truth. Share your experiences with courage, as well as a thick skin. Say something foolish — on the Internet, the best way to get attention isn’t to ask questions, but to provide the wrong answers.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_4":{"__typename":"Paragraph","id":"fbed0e961232_4","name":"1ae0","type":"P","href":null,"layout":null,"metadata":null,"text":"If you want the opportunity to learn new things, give the wrong answer to a problem; out of nowhere, experts will materialise and correct you. If you are not initially talking about an imperfect answer, however, no one will show up to say much about anything.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_5":{"__typename":"Paragraph","id":"fbed0e961232_5","name":"db96","type":"P","href":null,"layout":null,"metadata":null,"text":"In the words of Leonard Cohen, “There is a crack in everything, that’s how the light gets in”. Without an imperfect sketch, there isn’t anything to inspire us to do better.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_6":{"__typename":"Paragraph","id":"fbed0e961232_6","name":"cd40","type":"P","href":null,"layout":null,"metadata":null,"text":"Searching and Asking","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":20,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_7":{"__typename":"Paragraph","id":"fbed0e961232_7","name":"de73","type":"P","href":null,"layout":null,"metadata":null,"text":"Another important point is to ask questions. The benefit of having a community is that you can find people and information through forums and chat rooms. When you are working on a new project, you want to put it all in an easy-to-remember Web domain. With the new crop of top-level domains, getting friendly URLs is much easier and cheaper than it used to be.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_8":{"__typename":"Paragraph","id":"fbed0e961232_8","name":"c622","type":"P","href":null,"layout":null,"metadata":null,"text":"Keywords are very important. The project “go,” for example, could not be found in search engines, so researchers had to invent a new keyword, “golang,” so that others on Google or in the Forum would be able to find the right place to be able to ask the right kind of people.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_9":{"__typename":"Paragraph","id":"fbed0e961232_9","name":"b7c3","type":"P","href":null,"layout":null,"metadata":null,"text":"Coming up with new names, of course, is a very difficult thing. There is a saying: “There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.”","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_10":{"__typename":"Paragraph","id":"fbed0e961232_10","name":"ccb0","type":"P","href":null,"layout":null,"metadata":null,"text":"RTFM Considered Harmful","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":23,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_11":{"__typename":"Paragraph","id":"fbed0e961232_11","name":"3fb2","type":"P","href":null,"layout":null,"metadata":null,"text":"So when someone asks you questions, when they finally find you through keywords, you can seriously respond, instead of coldly saying, “Read The Fine Manual.”","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_12":{"__typename":"Paragraph","id":"fbed0e961232_12","name":"30db","type":"P","href":null,"layout":null,"metadata":null,"text":"Saying RTFM is like saying, “Do not deal with people — deal with books instead.” But this way is unproductive because it blocks what we call our social objects. In contrast to RTFM, someone can ask a question, meet new people through answers, learn things through their answers, and again meet new people when offering this answer to others, continuing the loop.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_13":{"__typename":"Paragraph","id":"fbed0e961232_13","name":"99ea","type":"P","href":null,"layout":null,"metadata":null,"text":"If you cut this chain of souls, saying to someone, “Your step to me is the last step — go back and read the manual,” then their journey of joining the open source process is blocked, and they must find a new upstream before they can continue. So please don’t ever do that. Rather, help a person go down this road together. You can walk this road together much longer and go much farther.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_14":{"__typename":"Paragraph","id":"fbed0e961232_14","name":"53c9","type":"P","href":null,"layout":null,"metadata":null,"text":"Warm Reception","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":14,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_15":{"__typename":"Paragraph","id":"fbed0e961232_15","name":"64d9","type":"P","href":null,"layout":null,"metadata":null,"text":"Sometimes such mutual support and community is viewed as a clique, a coterie, and so on. But, don’t look down on cliques — when it comes climbing with a group of people in the cold of the mountains, a close group around the campfire can be the most basic need. This is essential, especially for the novice who climbs for the first time — in psychology, we call that the Basic Assumption Group.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_16":{"__typename":"Paragraph","id":"fbed0e961232_16","name":"cc77","type":"P","href":null,"layout":null,"metadata":null,"text":"Only when the need of closely-knit supports is present will people be able to form a Working Group, which does the real work of climbing higher peaks. Especially for the novice, such a closely-knit support circle is indispensable.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_17":{"__typename":"Paragraph","id":"fbed0e961232_17","name":"3243","type":"P","href":null,"layout":null,"metadata":null,"text":"Now I want to talk about how to offer constructive criticism. Although we just said individuals need to be open-minded regarding the varying development of others, under specific circumstances it is possible that other people’s brains contain cached information that has expired. At this time, we still need to offer criticism, asking others to clear their cache.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_18":{"__typename":"Paragraph","id":"fbed0e961232_18","name":"6dfb","type":"P","href":null,"layout":null,"metadata":null,"text":"This time the focus is having a friendly attitude — to find at least one common ground that both parties agree upon. They may make ten claims, nine of which you think are wrong, but you still can respond to the one with which you agree: “I think you are talking about one thing that is right, but circumstances have changed for those nine other things.”","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_19":{"__typename":"Paragraph","id":"fbed0e961232_19","name":"053b","type":"P","href":null,"layout":null,"metadata":null,"text":"Cache Invalidation","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":18,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_20":{"__typename":"Paragraph","id":"fbed0e961232_20","name":"8fb8","type":"P","href":null,"layout":null,"metadata":null,"text":"We can take a very practical example. After a big earthquake in Nepal, more than 2,000 mappers from all over the world helped in the humanitarian OpenStreetMap team effort to create a street map around Kathmandu. Within 72 hours, they had mapped hundreds of thousands of roads and buildings based on satellite images.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_21":{"__typename":"Paragraph","id":"fbed0e961232_21","name":"2121","type":"P","href":null,"layout":null,"metadata":null,"text":"In Taiwan, a civic hacker, Billy Lin, wrote an instructional article that called for novices to join OpenStreetMap and spend maybe half an hour learning to help with the Nepal mapping effort. Coincidentally, our president-to-be, Tsai, shared Billy’s call for help, resulting in an influx of interest.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_22":{"__typename":"Paragraph","id":"fbed0e961232_22","name":"4fca","type":"P","href":null,"layout":null,"metadata":null,"text":"At this time, the media was interviewing T.H. Schee, who had helped in the Typhoon Morakot relief effort and is an expert on crowd-disaster relief. He said that this is not always a good situation because in disasters, resources are very precious. A sudden influx of thousands or tens of thousands of people rallying together can overwhelm server resources, leading to a system breakdown. Instead, he thinks the priority should be reserved for the professional OpenStreetMap community, not for newbies.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_23":{"__typename":"Paragraph","id":"fbed0e961232_23","name":"a0f5","type":"P","href":null,"layout":null,"metadata":null,"text":"When I communicated with T.H., I began by noting first that his concerns are certainly valid; this was especially true in 2008 when Elastic Storage was new to the scene. Seven years ago, if there was an influx of new contributors, there was no fast way to absorb them; but today we have auto-scaled elastic servers and machine-learning or peer-view systems in place to validate new contributions.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_24":{"__typename":"Paragraph","id":"fbed0e961232_24","name":"e486","type":"P","href":null,"layout":null,"metadata":null,"text":"While T.H.’s concerns may have been important and valid back in that time, now the situation is different. Still, it’s necessary to adopt a friendly approach to communication. Subsequently, T.H. checked the mailing list and found that it was not the same as before, so he also publicly corrected this. However, the key here is to first agree on the concepts behind his ideas, although there may be some preconceptions that have since expired, so we just need to clear the cache.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_25":{"__typename":"Paragraph","id":"fbed0e961232_25","name":"1877","type":"P","href":null,"layout":null,"metadata":null,"text":"Troll Hugging","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":13,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_26":{"__typename":"Paragraph","id":"fbed0e961232_26","name":"c3cf","type":"P","href":null,"layout":null,"metadata":null,"text":"Of course, not everyone will respond this gracefully to such communication; many others react negatively, so being thick-skinned is good. Perhaps someone writes 100 words, and 95 words are ad hominem attacks, and only 5 words have redeeming quality. From this point of view, you might as well ignore those 95 words, and instead politely and sincerely respond to the 5 words.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_27":{"__typename":"Paragraph","id":"fbed0e961232_27","name":"ff9d","type":"P","href":null,"layout":null,"metadata":null,"text":"Here is a concept I proposed called “Troll Hugging”. As long as someone comes across as disruptive, I do something to keep talking until they stop. This is my personal interest — not to say everyone here needs to cultivate this hobby.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_28":{"__typename":"Paragraph","id":"fbed0e961232_28","name":"61be","type":"P","href":null,"layout":null,"metadata":null,"text":"Specifically, how does that work? If someone types ten statements, nine of which are trolling, you can still respond to one single non-trolling statement in a sincere manner (and even that one line is trolling, but you can interpret it in a non-trolling fashion). Then, the person will learn that the nine trolling statements had no effect, as they received no response, but the other one statement was meaningful.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_29":{"__typename":"Paragraph","id":"fbed0e961232_29","name":"0a27","type":"P","href":null,"layout":null,"metadata":null,"text":"Trolls, in fact, are usually just people craving attention; by understanding what is constructive and merits attention, we can encourage participation and make contributions in a constructive way in order to get attention. In that case, they will be more likely to become a part of the community.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_30":{"__typename":"Paragraph","id":"fbed0e961232_30","name":"3b98","type":"P","href":null,"layout":null,"metadata":null,"text":"Reactive Functions","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":18,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_31":{"__typename":"Paragraph","id":"fbed0e961232_31","name":"4c29","type":"P","href":null,"layout":null,"metadata":null,"text":"Here, listening is very important. Sometimes during a ‘flame war,’ if one side stops and says, “For the next two hours, I will quit talking and listen to you,” there suddenly is no war anymore. Often, we are caught in the heat of the moment; every 30 seconds, we can’t resist the urge to type, “Hey, this sentence you said is wrong,” but they have not yet finished typing. So it is important to sit quietly and let the other person speak their mind.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_32":{"__typename":"Paragraph","id":"fbed0e961232_32","name":"cbf3","type":"P","href":null,"layout":null,"metadata":null,"text":"Reactive here means not rushing to say something, instead giving the other person your full, complete, listening attention; this is called active listening. There is an easy mnemonic for this technique.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_33":{"__typename":"Paragraph","id":"fbed0e961232_33","name":"1d38","type":"P","href":null,"layout":null,"metadata":null,"text":"We may know that there is a protocol called HTTP, which is the way browsers communicate with Web servers. When a browser talks with the server, the server can respond with five different kinds of codes. When we are in active listening, we try to take only the first three kinds, and ignore the 4th and 5th kinds of responses.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_34":{"__typename":"Paragraph","id":"fbed0e961232_34","name":"023c","type":"P","href":null,"layout":null,"metadata":null,"text":"Specifically speaking, when someone is telling you something, you can offer them three kinds of responses:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_35":{"__typename":"Paragraph","id":"fbed0e961232_35","name":"976b","type":"ULI","href":null,"layout":null,"metadata":null,"text":"100, please continue to speak;\n101, I don’t understand, can you speak a common language?","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":31,"end":88,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_36":{"__typename":"Paragraph","id":"fbed0e961232_36","name":"ed23","type":"ULI","href":null,"layout":null,"metadata":null,"text":"200, I heard you;\n201, I heard you, and here’s what I think you meant.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":18,"end":70,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_37":{"__typename":"Paragraph","id":"fbed0e961232_37","name":"2782","type":"ULI","href":null,"layout":null,"metadata":null,"text":"300, there are lots of different communities for this topic, you can try to approach any of them;\n301, I suggest you find another person with whom to discuss this.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":98,"end":163,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_38":{"__typename":"Paragraph","id":"fbed0e961232_38","name":"d563","type":"P","href":null,"layout":null,"metadata":null,"text":"It’s great up to this point. Avoid 400, which is saying, “You are wrong, this is your fault,” or 500, which is saying, “Oh, I’m sorry, it was my fault.” Okay?","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_39":{"__typename":"Paragraph","id":"fbed0e961232_39","name":"7765","type":"P","href":null,"layout":null,"metadata":null,"text":"So, the point is to avoid 400 and 500 — don’t rush to identify blame in the situation.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_40":{"__typename":"Paragraph","id":"fbed0e961232_40","name":"8f8f","type":"P","href":null,"layout":null,"metadata":null,"text":"Empathy","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":7,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_41":{"__typename":"Paragraph","id":"fbed0e961232_41","name":"6a2c","type":"P","href":null,"layout":null,"metadata":null,"text":"Sometimes say, “Yes, please go ahead,” sometimes say, “I understand, make sure I heard the meaning,” and sometimes say, “There are some people we need to consult.” Then, when the other person finishes what they have to say, there is no fire in the flame war anymore; this is a fundamental demonstration of empathy.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_42":{"__typename":"Paragraph","id":"fbed0e961232_42","name":"bc8a","type":"P","href":null,"layout":null,"metadata":null,"text":"By looking at others’ statements this way, you’re making moves to put yourself in their shoes and gradually learning about their character. Anyone’s activities in the open source community leaves footprints, meaning we can trace back their words, their comments, and so on, seeing a new worldview from that other person’s point of view.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_43":{"__typename":"Paragraph","id":"fbed0e961232_43","name":"4fa8","type":"P","href":null,"layout":null,"metadata":null,"text":"No One is an Island","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":19,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_44":{"__typename":"Paragraph","id":"fbed0e961232_44","name":"d6a2","type":"P","href":null,"layout":null,"metadata":null,"text":"Characteristics of the open source community, its solidarity as sociologist Gilles Deleuze described in the book “A Thousand Plateaus,” are of the Rhizome model. Think about plants like ginger, with organic growth in various directions, self-organized, and wherever it breaks it may sprout in the broken point; where there are vacancies, a new community springs forth. Communities keep pushing forward in all directions based on this idea.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_45":{"__typename":"Paragraph","id":"fbed0e961232_45","name":"7817","type":"P","href":null,"layout":null,"metadata":null,"text":"The point is, regardless of how brilliant you are in a field — a so-called “demigod”, even — it is still important to remain humble because only with a humble attitude can we welcome others with different skillsets to join the project. Otherwise, it’s like saying, “I don’t need you; I can do things my way.” Such an isolated attitude cannot help us connect with new contributors.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_46":{"__typename":"Paragraph","id":"fbed0e961232_46","name":"5f36","type":"P","href":null,"layout":null,"metadata":null,"text":"Worse is Better","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_47":{"__typename":"Paragraph","id":"fbed0e961232_47","name":"5018","type":"P","href":null,"layout":null,"metadata":null,"text":"There is a formula called Worse is Better, which I translated to Chinese as 劣即是夯. In short, it means “Do not be afraid of ‘losing face.’” No matter how bad something is at first — such as JavaScript — in the end it becomes the most popular language, so you should not be afraid of initially losing face. Throwing out an ugly version is fine.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*v8HKA2IlWfedKYqP1PIYEg.jpeg":{"__typename":"ImageMetadata","id":"1*v8HKA2IlWfedKYqP1PIYEg.jpeg","originalHeight":600,"originalWidth":800,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:fbed0e961232_48":{"__typename":"Paragraph","id":"fbed0e961232_48","name":"97b2","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*v8HKA2IlWfedKYqP1PIYEg.jpeg"},"text":"Three iterations of the gov-zero logo.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_49":{"__typename":"Paragraph","id":"fbed0e961232_49","name":"374d","type":"P","href":null,"layout":null,"metadata":null,"text":"The leftmost logo was designed by two great programmers who are, however, not great at designing logos.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_50":{"__typename":"Paragraph","id":"fbed0e961232_50","name":"cccd","type":"P","href":null,"layout":null,"metadata":null,"text":"That logo was displayed in the 0th gov-zero hackathon, where the designer Even Wu saw it and became rather troubled; this is known as “one who cares, suffers” —Wu was compelled to improve the design; otherwise his day would have been ruined.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_51":{"__typename":"Paragraph","id":"fbed0e961232_51","name":"4798","type":"P","href":null,"layout":null,"metadata":null,"text":"So as long as the first initiator is not afraid of losing face, better improvements will surely appear.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_52":{"__typename":"Paragraph","id":"fbed0e961232_52","name":"105d","type":"P","href":null,"layout":null,"metadata":null,"text":"Safe Space","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":10,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_53":{"__typename":"Paragraph","id":"fbed0e961232_53","name":"6426","type":"P","href":null,"layout":null,"metadata":null,"text":"Here we emphasize the cultural concept of intersectionality, which means that each person is in a social class, status, ethnicity, gender identity and orientation — maybe we are privileged in some aspects, and in minority positions for others. Using our own experiences in vulnerable positions, we can empathize with people in the minority; you can put yourself in their shoes, fostering genuine solidarity.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_54":{"__typename":"Paragraph","id":"fbed0e961232_54","name":"44fc","type":"P","href":null,"layout":null,"metadata":null,"text":"In the past few years, we are encouraging conferences to adopt Codes of Conduct to set norms for participation. As no Code is universally applicable, we encourage conference organizers to consider and imagine that participants come to learn things; then commentary on body shapes, skin color, and sexy pictures are perhaps unwelcomed distractions. If they are indeed distractions, maybe we can agree beforehand not to avoid perpetuating those commentaries. This way, everyone can have a safe space to learn together.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_55":{"__typename":"Paragraph","id":"fbed0e961232_55","name":"2fb4","type":"P","href":null,"layout":null,"metadata":null,"text":"Solidarity & Diversity","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":22,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_56":{"__typename":"Paragraph","id":"fbed0e961232_56","name":"c4c6","type":"P","href":null,"layout":null,"metadata":null,"text":"Just as there are different cultures, like Perl, Ruby, and PHP, all these communities have their own unique methods of operation, and it’s important that we are able to humbly communicate with each other —that’s the only way to learn from each other.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_57":{"__typename":"Paragraph","id":"fbed0e961232_57","name":"bf4a","type":"P","href":null,"layout":null,"metadata":null,"text":"During apartheid in South Africa, blacks and whites didn’t speak to each other, but if you ask Obama now, is he white or black? People in the audience, are you white or black? The concept of diversity is not to divide people into binary groups, like programmers and non-programmers.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_58":{"__typename":"Paragraph","id":"fbed0e961232_58","name":"55be","type":"P","href":null,"layout":null,"metadata":null,"text":"By contrast, if there are 1000 people here, then there are 1000 kinds of people here. Only in this context is authentic communication possible, so we can understand each other, rather than labeling each other.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_59":{"__typename":"Paragraph","id":"fbed0e961232_59","name":"a737","type":"P","href":null,"layout":null,"metadata":null,"text":"Self Governance","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_60":{"__typename":"Paragraph","id":"fbed0e961232_60","name":"3417","type":"P","href":null,"layout":null,"metadata":null,"text":"Open source folks, of course, likes to have fun, but also has the responsibility, on a personal level, to practice techniques such as Pomodoro Technique and Inbox Zero, which help to keep promises on things we agreed to work on.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_61":{"__typename":"Paragraph","id":"fbed0e961232_61","name":"7568","type":"P","href":null,"layout":null,"metadata":null,"text":"At the community level, it’s important to be as transparent as possible in the decision-making process. Why transparency? Because in life there are so many things outside of the community, and maybe one day you can’t take so much responsibility anymore.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_62":{"__typename":"Paragraph","id":"fbed0e961232_62","name":"82f4","type":"P","href":null,"layout":null,"metadata":null,"text":"Delegation over Inheritance","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":27,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_63":{"__typename":"Paragraph","id":"fbed0e961232_63","name":"b5a0","type":"P","href":null,"layout":null,"metadata":null,"text":"When we write programs, we know that inheritance — in the sense of “abruptly leaving a legacy to be inherited” is seldom a good idea; we should instead focus on delegation, gradually passing the baton through a modular approach, enabling a collaborative, community-based approach to the project.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":37,"end":49,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":161,"end":171,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_64":{"__typename":"Paragraph","id":"fbed0e961232_64","name":"e025","type":"P","href":null,"layout":null,"metadata":null,"text":"This is a natural element of the project cycle, because open source is not a zero-sum game; there is no risk of “losing the race at the starting line.” As long as you make sure that the person picking up the baton can run toward their own direction, then they have won the race already —by deciding on a goal of their own.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":255,"end":285,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_65":{"__typename":"Paragraph","id":"fbed0e961232_65","name":"6e21","type":"P","href":null,"layout":null,"metadata":null,"text":"Shared Memory","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":13,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_66":{"__typename":"Paragraph","id":"fbed0e961232_66","name":"899b","type":"P","href":null,"layout":null,"metadata":null,"text":"Eventually, the only thing that remains is how we live on in each other’s minds.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_67":{"__typename":"Paragraph","id":"fbed0e961232_67","name":"a5e5","type":"P","href":null,"layout":null,"metadata":null,"text":"Deserts Xuan has a lyric that says, “Time soars away, we’re not beside each other, but within each other.” In this era of the social Web, we are each other’s horcruxes, embedding our soul shards through work that lives in each other’s minds.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_68":{"__typename":"Paragraph","id":"fbed0e961232_68","name":"13b1","type":"P","href":null,"layout":null,"metadata":null,"text":"I may have left Perl 6 development for a long time, but the community still keeps the culture alive, and together a production-ready Perl 6 release was delivered on Christmas 2015 — in the spirit of Optimizing for Fun.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":199,"end":218,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*_bvPwhWMM4TixHJu.jpg":{"__typename":"ImageMetadata","id":"0*_bvPwhWMM4TixHJu.jpg","originalHeight":600,"originalWidth":800,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:fbed0e961232_69":{"__typename":"Paragraph","id":"fbed0e961232_69","name":"bfa6","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*_bvPwhWMM4TixHJu.jpg"},"text":"This picture contains the four main elements of “optimizing for fun”: a stable support, a safe space, unconstrained activities, and finally, new ways of looking at the world.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":5,"end":12,"href":"https:\u002F\u002Fwww.flickr.com\u002Fphotos\u002Florenkerns\u002F8645901176\u002Fin\u002Fphotolist-eb1vcE-uXoMA-82MrnG-5SxMoj-cwZS9m-6vxamD-okcLWp-eqauLd-4wYRKL-4jkdvP-8nZxQ-u2s93-7D88AH-4fFcj6-kfYwKJ-8tWmjs-bX1cRk-e5Zxe-4djKY-3k7GK-nCQ9zg-4yB2xT-eqTPrw-51ZL2c-oPHfyE-m6L6Rg-5kGSfZ-9BhVru-445jH-5sj2wG-aaYNVK-oekd42-obcWAM-bWdXxv-o2cipA-cakiHL-4gmTXw-aCVHHK-7DZrYN-9RaXeZ-6tQchF-eoZV3A-7qLvKM-5kGSga-83rjzE-w2p3U-nbFyH8-5EhDg2-cBRRnA-aMH1e4","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_70":{"__typename":"Paragraph","id":"fbed0e961232_70","name":"5e31","type":"P","href":null,"layout":null,"metadata":null,"text":"Ars Longa!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":10,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_71":{"__typename":"Paragraph","id":"fbed0e961232_71","name":"dae8","type":"P","href":null,"layout":null,"metadata":null,"text":"Projects are like the pyramids — the community may see the pyramids from a distance, and then gather around the pyramids to form a bazaar, where we find each other, and learn from each other.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_72":{"__typename":"Paragraph","id":"fbed0e961232_72","name":"b4ee","type":"P","href":null,"layout":null,"metadata":null,"text":"A website exists for a time, of course, and open source is for a lifetime.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_73":{"__typename":"Paragraph","id":"fbed0e961232_73","name":"ea73","type":"P","href":null,"layout":null,"metadata":null,"text":"A lifetime is not long, however; life is like a rainbow, emerged and borrowed from nature.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_74":{"__typename":"Paragraph","id":"fbed0e961232_74","name":"026d","type":"P","href":null,"layout":null,"metadata":null,"text":"Others who see the rainbow may be touched by it; people touched this way are inspired to make new creations, and the creation can move more people, which is how culture becomes endless and brings us continuous delight.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*zzvdRmHGGXONZpuQ2FeqsQ.png":{"__typename":"ImageMetadata","id":"1*zzvdRmHGGXONZpuQ2FeqsQ.png","originalHeight":325,"originalWidth":325,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:fbed0e961232_75":{"__typename":"Paragraph","id":"fbed0e961232_75","name":"6b7b","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*zzvdRmHGGXONZpuQ2FeqsQ.png"},"text":"The logo of Git. It shows we are linked in solidarity, and also connected to the external world.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_76":{"__typename":"Paragraph","id":"fbed0e961232_76","name":"583c","type":"P","href":null,"layout":null,"metadata":null,"text":"Finally, when I was learning Git myself, this is how I learned its commands:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_77":{"__typename":"Paragraph","id":"fbed0e961232_77","name":"9693","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Fetch new facts as they arise — accept it.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":5,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":32,"end":38,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":39,"end":42,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_78":{"__typename":"Paragraph","id":"fbed0e961232_78","name":"0636","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Merge with your existing understanding — face it.\nConflicts may arise here; we just need to resolve them.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":5,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":41,"end":45,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":46,"end":49,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_79":{"__typename":"Paragraph","id":"fbed0e961232_79","name":"237f","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Commit to an action — deal with it.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":6,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":22,"end":31,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":32,"end":35,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_80":{"__typename":"Paragraph","id":"fbed0e961232_80","name":"d0a5","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Push it to the world — let go of it.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":4,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":23,"end":36,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_81":{"__typename":"Paragraph","id":"fbed0e961232_81","name":"ba73","type":"P","href":null,"layout":null,"metadata":null,"text":"Why “let it go?” Because after you push out open source code to the world, it’s no longer yours.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_82":{"__typename":"Paragraph","id":"fbed0e961232_82","name":"19f0","type":"P","href":null,"layout":null,"metadata":null,"text":"Open source means that anyone can take the code, and run with it toward a new creative direction. We need to avoid obsessing over the ownership of our work.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_83":{"__typename":"Paragraph","id":"fbed0e961232_83","name":"343c","type":"P","href":null,"layout":null,"metadata":null,"text":"These are the lessons that I have learned from open source communities. Thank you.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:fbed0e961232_84":{"__typename":"Paragraph","id":"fbed0e961232_84","name":"ed79","type":"P","href":null,"layout":null,"metadata":null,"text":"(Source: CC0 1.0 https:\u002F\u002Fhackpad.com\u002FC7vQilFOSGD)","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":17,"end":48,"href":"https:\u002F\u002Fhackpad.com\u002FC7vQilFOSGD","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":49,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"UserViewerEdge:userId:44408f5e9c48-viewerId:lo_fcdac3868c3d":{"__typename":"UserViewerEdge","id":"userId:44408f5e9c48-viewerId:lo_fcdac3868c3d","isMuting":false},"PostViewerEdge:postId:32f5d8107e34-viewerId:lo_fcdac3868c3d":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:32f5d8107e34-viewerId:lo_fcdac3868c3d","shouldFollowPostForExternalSearch":true},"Tag:open-source":{"__typename":"Tag","id":"open-source","displayTitle":"Open Source","normalizedTagSlug":"open-source"},"Tag:community":{"__typename":"Tag","id":"community","displayTitle":"Community","normalizedTagSlug":"community"},"Tag:enlightenment":{"__typename":"Tag","id":"enlightenment","displayTitle":"Enlightenment","normalizedTagSlug":"enlightenment"},"Post:32f5d8107e34":{"__typename":"Post","id":"32f5d8107e34","collection":null,"content({\"postMeteringOptions\":{\"referrer\":\"https:\u002F\u002Fduckduckgo.com\u002F\"}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"ad1b","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"b8d0","startIndex":75,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"68c7","startIndex":83,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:fbed0e961232_0"},{"__ref":"Paragraph:fbed0e961232_1"},{"__ref":"Paragraph:fbed0e961232_2"},{"__ref":"Paragraph:fbed0e961232_3"},{"__ref":"Paragraph:fbed0e961232_4"},{"__ref":"Paragraph:fbed0e961232_5"},{"__ref":"Paragraph:fbed0e961232_6"},{"__ref":"Paragraph:fbed0e961232_7"},{"__ref":"Paragraph:fbed0e961232_8"},{"__ref":"Paragraph:fbed0e961232_9"},{"__ref":"Paragraph:fbed0e961232_10"},{"__ref":"Paragraph:fbed0e961232_11"},{"__ref":"Paragraph:fbed0e961232_12"},{"__ref":"Paragraph:fbed0e961232_13"},{"__ref":"Paragraph:fbed0e961232_14"},{"__ref":"Paragraph:fbed0e961232_15"},{"__ref":"Paragraph:fbed0e961232_16"},{"__ref":"Paragraph:fbed0e961232_17"},{"__ref":"Paragraph:fbed0e961232_18"},{"__ref":"Paragraph:fbed0e961232_19"},{"__ref":"Paragraph:fbed0e961232_20"},{"__ref":"Paragraph:fbed0e961232_21"},{"__ref":"Paragraph:fbed0e961232_22"},{"__ref":"Paragraph:fbed0e961232_23"},{"__ref":"Paragraph:fbed0e961232_24"},{"__ref":"Paragraph:fbed0e961232_25"},{"__ref":"Paragraph:fbed0e961232_26"},{"__ref":"Paragraph:fbed0e961232_27"},{"__ref":"Paragraph:fbed0e961232_28"},{"__ref":"Paragraph:fbed0e961232_29"},{"__ref":"Paragraph:fbed0e961232_30"},{"__ref":"Paragraph:fbed0e961232_31"},{"__ref":"Paragraph:fbed0e961232_32"},{"__ref":"Paragraph:fbed0e961232_33"},{"__ref":"Paragraph:fbed0e961232_34"},{"__ref":"Paragraph:fbed0e961232_35"},{"__ref":"Paragraph:fbed0e961232_36"},{"__ref":"Paragraph:fbed0e961232_37"},{"__ref":"Paragraph:fbed0e961232_38"},{"__ref":"Paragraph:fbed0e961232_39"},{"__ref":"Paragraph:fbed0e961232_40"},{"__ref":"Paragraph:fbed0e961232_41"},{"__ref":"Paragraph:fbed0e961232_42"},{"__ref":"Paragraph:fbed0e961232_43"},{"__ref":"Paragraph:fbed0e961232_44"},{"__ref":"Paragraph:fbed0e961232_45"},{"__ref":"Paragraph:fbed0e961232_46"},{"__ref":"Paragraph:fbed0e961232_47"},{"__ref":"Paragraph:fbed0e961232_48"},{"__ref":"Paragraph:fbed0e961232_49"},{"__ref":"Paragraph:fbed0e961232_50"},{"__ref":"Paragraph:fbed0e961232_51"},{"__ref":"Paragraph:fbed0e961232_52"},{"__ref":"Paragraph:fbed0e961232_53"},{"__ref":"Paragraph:fbed0e961232_54"},{"__ref":"Paragraph:fbed0e961232_55"},{"__ref":"Paragraph:fbed0e961232_56"},{"__ref":"Paragraph:fbed0e961232_57"},{"__ref":"Paragraph:fbed0e961232_58"},{"__ref":"Paragraph:fbed0e961232_59"},{"__ref":"Paragraph:fbed0e961232_60"},{"__ref":"Paragraph:fbed0e961232_61"},{"__ref":"Paragraph:fbed0e961232_62"},{"__ref":"Paragraph:fbed0e961232_63"},{"__ref":"Paragraph:fbed0e961232_64"},{"__ref":"Paragraph:fbed0e961232_65"},{"__ref":"Paragraph:fbed0e961232_66"},{"__ref":"Paragraph:fbed0e961232_67"},{"__ref":"Paragraph:fbed0e961232_68"},{"__ref":"Paragraph:fbed0e961232_69"},{"__ref":"Paragraph:fbed0e961232_70"},{"__ref":"Paragraph:fbed0e961232_71"},{"__ref":"Paragraph:fbed0e961232_72"},{"__ref":"Paragraph:fbed0e961232_73"},{"__ref":"Paragraph:fbed0e961232_74"},{"__ref":"Paragraph:fbed0e961232_75"},{"__ref":"Paragraph:fbed0e961232_76"},{"__ref":"Paragraph:fbed0e961232_77"},{"__ref":"Paragraph:fbed0e961232_78"},{"__ref":"Paragraph:fbed0e961232_79"},{"__ref":"Paragraph:fbed0e961232_80"},{"__ref":"Paragraph:fbed0e961232_81"},{"__ref":"Paragraph:fbed0e961232_82"},{"__ref":"Paragraph:fbed0e961232_83"},{"__ref":"Paragraph:fbed0e961232_84"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:44408f5e9c48"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002F@audrey.tang\u002Flessons-i-ve-learned-32f5d8107e34","primaryTopic":null,"topics":[],"isLimitedState":false,"isPublished":true,"allowResponses":true,"responsesLocked":false,"visibility":"PUBLIC","latestPublishedVersion":"fbed0e961232","postResponses":{"__typename":"PostResponses","count":1},"responseDistribution":"NOT_DISTRIBUTED","clapCount":190,"title":"Lessons learned from open source communities","isSeries":false,"sequence":null,"uniqueSlug":"lessons-i-ve-learned-32f5d8107e34","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1452300365867,"readingTime":11.066981132075473,"previewContent":{"__typename":"PreviewContent","subtitle":"Cache invalidation, Troll hugging, and Reactive functions."},"previewImage":{"__ref":"ImageMetadata:1*v8HKA2IlWfedKYqP1PIYEg.jpeg"},"isShortform":false,"seoTitle":"","firstPublishedAt":1452182101755,"updatedAt":1528495457953,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:32f5d8107e34-viewerId:lo_fcdac3868c3d"},"isSuspended":false,"license":"CC_40_ZERO","tags":[{"__ref":"Tag:open-source"},{"__ref":"Tag:community"},{"__ref":"Tag:enlightenment"}],"isFeaturedInPublishedPublication":false,"isNewsletter":false,"statusForCollection":null,"pendingCollection":null,"detectedLanguage":"en","wordCount":2787,"layerCake":0}}</script><script>window.__MIDDLEWARE_STATE__={"session":{"xsrf":""},"cache":{"cacheStatus":"HIT"}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.7676eb6b.js"></script><script src="https://cdn-client.medium.com/lite/static/js/4164.63b05cfd.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.4d604054.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.5bef8967.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4505.6dfaf853.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9380.fb176dee.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.14632006.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.2791b202.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.e7627065.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4737.f07510eb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7381.7f2aa00a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6372.2eeebbff.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7938.607ab959.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6240.ce1d8647.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6199.4827c642.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4929.485ef991.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3623.7c96e20d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7979.15bcd496.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.de4e470a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.ba40f706.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8664.b06e2cc0.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4378.14d600be.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/144.54e8afc4.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3666.cdb15b43.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8768.c294838b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/1069.499eaa23.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3523.a6edc225.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3515.71934948.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.1d221cdc.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.0d800846.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.1770f8f5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.2bee425e.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.55ad176a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/responses.editor.00cf71c8.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'926c21a10a4344bb',t:'MTc0MzA0OTYwNS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>