Slide 1

Slide 1 text

ALL HANDS ON DECK The React Native Community Experience

Slide 2

Slide 2 text

HELLO! I’M @KELSET Lorenzo THE REACT NATIVE COMMUNITY EXPERIENCE 2 Software Engineer @ Formidable Maintainer @ React Native “Owner” @ React Native Community

Slide 3

Slide 3 text

THE REACT NATIVE COMMUNITY EXPERIENCE MY STORY 3 WRITING ...BLOGPOSTS ON MEDIUM

Slide 4

Slide 4 text

THE REACT NATIVE COMMUNITY EXPERIENCE 4 REACT NAVIGATION MY STORY

Slide 5

Slide 5 text

THE REACT NATIVE COMMUNITY EXPERIENCE 5 REACT NATIVE MY STORY

Slide 6

Slide 6 text

THE REACT NATIVE COMMUNITY EXPERIENCE MY STORY 6 TWO BOATS

Slide 7

Slide 7 text

THE REACT NATIVE COMMUNITY EXPERIENCE 7 LEAN CORE MY STORY

Slide 8

Slide 8 text

THE REACT NATIVE COMMUNITY EXPERIENCE 8 CHANGING ROLE INTO CARTOGRAPHER MY STORY ASKING HOW & WHY

Slide 9

Slide 9 text

THE REACT NATIVE COMMUNITY EXPERIENCE = “WHOOP” = “BOOOH” = YOU DECIDE! 9 LET’S PLAY A GAME!

Slide 10

Slide 10 text

THE REACT NATIVE COMMUNITY EXPERIENCE 10 WE FOUND A TREASURE

Slide 11

Slide 11 text

THE REACT NATIVE COMMUNITY EXPERIENCE 11 PIRATES WANT US DEAD

Slide 12

Slide 12 text

THE REACT NATIVE COMMUNITY EXPERIENCE 12 JACK SPARROW

Slide 13

Slide 13 text

THE REACT NATIVE COMMUNITY EXPERIENCE REACT NATIVE 13 78 734 Stars 77 000 Android Apps 240 914 Repos

Slide 14

Slide 14 text

THE REACT NATIVE COMMUNITY EXPERIENCE REACT NATIVE COMMUNITY 14 77 258 Stars 70 Repositories (25 Lean Core’s) 45 Repositories Have 1 Maintainer

Slide 15

Slide 15 text

THE REACT NATIVE COMMUNITY EXPERIENCE THE MAINTAINER’S RESPONSIBILITIES 15 ‣ submitting PRs to keep the library up to date against the React Native ‣ publishing new version ‣ write the changelog ‣ adding tools like CI ‣ reviews external PRs ‣ do issue triaging ‣ introduce & configure bots like ProBots ‣ maintain the non-code files in a repo, ex. issue templates, CoC, README etc WHY YOU SHOULD CARE

Slide 16

Slide 16 text

THE REACT NATIVE COMMUNITY EXPERIENCE THE REPOSITORIES INVOLVED 16 .github apple-sign-in art async-storage bob boost-for-react-native cameraview ci-sample cli discussion-and-proposal docker-android eslint-plugin-react-native-globals jsc-android-buildscripts lottie-react-native normalize-css-color react-native-audio-toolkit react-native-blur react-native- button react-native-camera react-native-cameraroll react-native-checkbox react-native-circleci-orb react-native-clipboard react-native-datetimepicker react-native-device-info react-native-directory react-native-drawer-layout react-native-drawer-layout-polyfill react-native-dummy react-native- geolocation react-native-google-analytics react-native-google-signin react-native-hooks react- native-image-editor react-native-image-picker react-native-image-picker-ios react-native-linear- gradient react-native-localize react-native-maps react-native-masked-view react-native-modal react-native-navbar react-native-netinfo react-native-picker react-native-platform-touchable react- native-progress-bar-android react-native-progress-view react-native-push-notification-ios react- native-safe-area-view react-native-segmented-control react-native-share react-native-side-menu react-native-simple-share react-native-slider react-native-statusbar react-native-svg react-native-tab- view react-native-template-typescript react-native-text-input-mask react-native-tvos react-native- video react-native-viewpager react-native-voice react-native-webgl react-native-webview releases rn-diff-purge rncamera-example template upgrade-helper WHY YOU SHOULD CARE

Slide 17

Slide 17 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHAT CAN THIS LEAD TO 17 WHY YOU SHOULD CARE RN-FETCH-BLOB* REACT-NATIVE-PUSH-NOTIFICATION …

Slide 18

Slide 18 text

THE REACT NATIVE COMMUNITY EXPERIENCE THE OPEN SOURCE WORLD 18 WHY DOES THIS HAPPEN OPENSSL BEFORE “HEARTBLEED” IT WASN’T ABLE TO SUPPORT ONE PERSON’S WORK. EXPRESS.JS THE MAINTAINER, GIVING THE REPO TO STRONGLOOP, KILLED THE CONTRIBUTOR COMMUNITY NODE.JS CREATED BY A FEW, THEN WAS FORKED THEN WAS RECONCILED INTO THE NODE.JS FOUNDATION - TO SOLVE ITS GOVERNANCE ISSUES https://www.fordfoundation.org/about/library/reports-and-studies/roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure/

Slide 19

Slide 19 text

THE REACT NATIVE COMMUNITY EXPERIENCE IN REACT NATIVE COMMUNITY 19 WHY THIS CAN HAPPEN GOVERNANCE SUSTAINABILITY

Slide 20

Slide 20 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHAT’S THE ORG ADDED VALUE 20 GOVERNANCE SHARED OWNERSHIP COMMON TOOLS /.github /react-native-bob /template /react-native-circleci-orb

Slide 21

Slide 21 text

THE REACT NATIVE COMMUNITY EXPERIENCE HOW IS IT WORKING NOW 21 GOVERNANCE %

Slide 22

Slide 22 text

AS LONG AS THE STRUCTURE OF THE GROUP IS INFORMAL, THE RULES OF HOW DECISIONS ARE MADE ARE KNOWN ONLY TO A FEW AND AWARENESS OF POWER IS LIMITED TO THOSE WHO KNOW THE RULES. THOSE WHO DO NOT KNOW THE RULES AND ARE NOT CHOSEN FOR INITIATION MUST REMAIN IN CONFUSION, OR SUFFER FROM PARANOID DELUSIONS THAT SOMETHING IS HAPPENING OF WHICH THEY ARE NOT QUITE AWARE. "The tyranny of structurelessness" THE REACT NATIVE COMMUNITY EXPERIENCE 22

Slide 23

Slide 23 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHAT COULD WE DO 23 GOVERNANCE …SELECT A GROUP THAT DECIDES FOR EVERYONE? …ROUGH CONSENSUS? …A VOTING SYSTEM WITH TIERED RECURRING DONATIONS? “Rough consensus isn’t majority rule. It’s okay to go ahead with a solution that may not look like the best choice for everyone or even the majority. “Not the best choice” means that you believe there is a better way to solve the problem, but you accept that this one will work too.”

Slide 24

Slide 24 text

THE REACT NATIVE COMMUNITY EXPERIENCE NOT HAVING ONE 24 SUSTAINABILITY AT ANY GIVEN POINT, THE MAINTAINER COULD RIGHTFULLY STOP ‣ There is a lot of work to do ‣ Doesn't have free time to spare anymore ‣ There is a change in priorities ‣ Doesn't have the drive to work on the repo anymore ‣ They stopped using it in prod MENTAL HEALTH ISSUES & BURNOUT overworking

Slide 25

Slide 25 text

THE REACT NATIVE COMMUNITY EXPERIENCE THE BIG QUESTION 25 SUSTAINABILITY HOW CAN WE ENSURE THAT THE TASK OF BEING A CORE CONTRIBUTOR AND A MAINTAINER FOR A REPOSITORY IN THIS ORG IS NOT A STRESSFUL AND NEGATIVE EXPERIENCE, WHILE KEEPING SAID REPOSITORY IN A HEALTHY STATE, GIVEN ALSO THEIR RELEVANCE FOR THE BROADER COMMUNITY OF REACT NATIVE DEVELOPERS?

Slide 26

Slide 26 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHAT COULD WE DO - PART 1 26 SUSTAINABILITY 1) REDUCE THE WORKLOAD PER MAINTAINER Introduce more maintainers Use more bots and CI/CD 2) INTRODUCE SOME ORG-LEVEL MONEY INFLUX Introduce an OpenCollective for the org In other instances the collected funds couldn't be used to directly pay for any development work

Slide 27

Slide 27 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHAT COULD WE DO - PART 2 27 SUSTAINABILITY 3) INTRODUCE SOME "PERSONAL" LEVEL MONEY INFLUX No need to manage money for someone "organic" imbalance problems as developers would receive donations based on their visibility 4) INTRODUCE MORE CORPORATES / STAKEHOLDERS Companies “adopting” the repositories would pay their developers Quality and consistency and longer support

Slide 28

Slide 28 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHO ARE YOU? 28 GETTING INVOLVED IF YOU ARE A COMPANY, CONSIDER DOING WHAT GODADDY AND CALLSTACK HAVE BEEN DOING. …OR WHAT FORMIDABLE AND FUTURICE HAVE BEEN DOING. IF YOU ARE AN INDIVIDUAL, REACH OUT TO THE MAINTAINERS OF ANY REPOSITORIES IN THE ORG! https://github.com/react-native-community/.github

Slide 29

Slide 29 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHY YOU SHOULD NOT DO IT 29 GETTING INVOLVED FOR THE MONEY* *until we solve sustainability FOR THE GLORY* ⌛ *but it’s a great way to get started in OSS

Slide 30

Slide 30 text

THE REACT NATIVE COMMUNITY EXPERIENCE WHY YOU SHOULD DO IT 30 GETTING INVOLVED @esemesek @Krizzu @bestander @jgfidelis @gengjiawen @thymikee @satya164 @kmagiera @emilioicai @turnrye @lelandrichardson @sbeca @charpeni @sibelius @bartolkaruza @nicholaslee119 @matt-oakes @harisbaig100 @Swaagie @mikehardy @DanielMSchmidt @empyrical @janicduplessis @brentvatne @vonovak @dabit3 @Trancever @radex @zoontek @rborn @FonDorn @mmazzarolo @wagnermaciel @kdenz @rafaellincoln @jgcmarins @Kureev @Ansalibrahim @michalchudziak @dmtrKovalenko @msand @emin93 @ivanzotov @cobarx @ferrannp @gre @Titozzz @pvinis @dlowder-salesforce @IljaDaderko @jainkuniya @mkonicek @alvelig @DanielZlotin @DanielSanudo @machour @melihberberolu @christopherdro @rewieer @vivfang @cesargdm @hannigand @jenshandersson @jamonholmgren @lucasbento @CHaNGeTe @ericlewis @grabbou @Kudo @hufkens @Johan-dutoit @Naturalclar @salah-ghanim

Slide 31

Slide 31 text

THE REACT NATIVE COMMUNITY EXPERIENCE “THE REAL TREASURE IS THE FRIENDS WE MADE ALONG THE WAY” 31

Slide 32

Slide 32 text

THANK YOU! @KELSET @FormidableLabs @ReactNative @ReactNativeComm Shoutout to: * Infinite Red & the sponsors * Facebook * Anna Peronetto ❤ 
 
 * Unsplash * my colleagues at Formidable https://github.com/react-native-community/.github