All Hands On Deck: The RN Community Experience

All Hands On Deck: The RN Community Experience

A useful metaphor for the React Native project is that of a huge ship. Operating such a vessel is a massive effort, that requires many people running back and forth the deck hoisting the sails and lowering the anchor - but also rowers, cooks, and skippers just to mention a few. During my two years on this journey, as a developer not working for FB, I've experienced and participated in the evolution of the project from a unique vantage point.

I could tell tales for days of the many seas we've been through, the high waves and the storms we've weathered - but one constant has been the help provided from other sailors like me, part of the community. The collaboration with the RN team allowed for increasingly more complex roles and projects to ship - and we are all but done.

So I want to raise a glass to these companions, and through my narration showcase what the community accomplished - and the new horizons we are steering towards.

C7171fc9d27bc81913733c6703093a61?s=128

Lorenzo Sciandra

July 11, 2019
Tweet

Transcript

  1. 2.

    HELLO! I’M @KELSET Lorenzo THE REACT NATIVE COMMUNITY EXPERIENCE 2

    Software Engineer @ Formidable Maintainer @ React Native “Owner” @ React Native Community
  2. 13.

    THE REACT NATIVE COMMUNITY EXPERIENCE REACT NATIVE 13 78 734

    Stars 77 000 Android Apps 240 914 Repos
  3. 14.

    THE REACT NATIVE COMMUNITY EXPERIENCE REACT NATIVE COMMUNITY 14 77

    258 Stars 70 Repositories (25 Lean Core’s) 45 Repositories Have 1 Maintainer
  4. 15.

    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
  5. 16.

    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
  6. 17.

    THE REACT NATIVE COMMUNITY EXPERIENCE WHAT CAN THIS LEAD TO

    17 WHY YOU SHOULD CARE RN-FETCH-BLOB* REACT-NATIVE-PUSH-NOTIFICATION …
  7. 18.

    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/
  8. 19.

    THE REACT NATIVE COMMUNITY EXPERIENCE IN REACT NATIVE COMMUNITY 19

    WHY THIS CAN HAPPEN GOVERNANCE SUSTAINABILITY
  9. 20.

    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
  10. 22.

    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
  11. 23.

    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.”
  12. 24.

    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
  13. 25.

    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?
  14. 26.

    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
  15. 27.

    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
  16. 28.

    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
  17. 29.

    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
  18. 30.

    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
  19. 32.

    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