$30 off During Our Annual Pro Sale. View Details »

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.

More Decks by Lorenzo 'kelset' Sciandra

Other Decks in Programming

Transcript

  1. ALL HANDS ON DECK
    The React Native Community Experience

    View Slide

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

    View Slide

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

    View Slide

  4. THE REACT NATIVE COMMUNITY EXPERIENCE 4
    REACT NAVIGATION
    MY STORY

    View Slide

  5. THE REACT NATIVE COMMUNITY EXPERIENCE 5
    REACT NATIVE
    MY STORY

    View Slide

  6. THE REACT NATIVE COMMUNITY EXPERIENCE
    MY STORY
    6
    TWO BOATS

    View Slide

  7. THE REACT NATIVE COMMUNITY EXPERIENCE 7
    LEAN CORE
    MY STORY

    View Slide

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

    View Slide

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

    View Slide

  10. THE REACT NATIVE COMMUNITY EXPERIENCE 10
    WE FOUND A TREASURE

    View Slide

  11. THE REACT NATIVE COMMUNITY EXPERIENCE 11
    PIRATES WANT US DEAD

    View Slide

  12. THE REACT NATIVE COMMUNITY EXPERIENCE 12
    JACK SPARROW

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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/

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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?

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide