Slide 1

Slide 1 text

Diary of my first OSS library Raúl Gómez Acuña

Slide 2

Slide 2 text

About me ‣ Spanish expat in Wroclaw since 5 years ago ‣ React & React Native developer ‣ Working at callstack.io ‣ https:/ /github.com/rauliyohmc ‣ Twitter: @rgommezz ‣ https:/ /medium.com/@rauliyohmc

Slide 3

Slide 3 text

1. OSS existing problems 2. Build a JS library like a pro 3. Release and maintenance

Slide 4

Slide 4 text

Diving into oss Skimming the surface

Slide 5

Slide 5 text

Diving into OSS Evolution of GitHub repositories from 2008 until 2013

Slide 6

Slide 6 text

Diving into OSS, 2016 ‣ 19.4+ million active repositories ‣ Is this something beneficial for the community? ‣ Analogy to JS fatigue ‣ You don’t need to reinvent the wheel!

Slide 7

Slide 7 text

Discovery

Slide 8

Slide 8 text

Quality Assessment

Slide 9

Slide 9 text

Conference driven development

Slide 10

Slide 10 text

Key points ‣ Open source is not a competition ‣ We need to see it as a collaborative environment ‣ Contribute to existing libraries! ‣ Start with something simple, like documentation

Slide 11

Slide 11 text

React Native and Offline

Slide 12

Slide 12 text

Discovery • Googled “react native offline”

Slide 13

Slide 13 text

Quality Assessment ‣ 2 were only libraries and 1 example app ‣ The most starred (83) only had 1 file with 55 lines of code ‣ Last commit 12 of January ‣ No test coverage

Slide 14

Slide 14 text

Wish List ‣ Showing/hiding several elements on a screen if offline ‣ Easy redux integration ‣ DRY for checking connectivity before launching API calls ‣ Offline queue

Slide 15

Slide 15 text

Extraction Would this be useful for other people?

Slide 16

Slide 16 text

Build a js-Based library Like a PRO

Slide 17

Slide 17 text

ESLINT ‣ Static analysis of your code ‣ Discover problems in JS code without executing it ‣ Comes with a predefined set of rules embraced by JS community ‣ Easily pluggable

Slide 18

Slide 18 text

ESLINT

Slide 19

Slide 19 text

rettier ‣ Opinionated code formatter for JavaScript ‣ Enforces a consistent code style across your codebase ‣ You focus on writing code

Slide 20

Slide 20 text

LOW ‣ Static type checker for JavaScript ‣ Benefits: ‣ You can incorporate it incrementally ‣ It finds bugs you encounter in runtime ‣ Downsides: ‣ Time spent on learning and typing

Slide 21

Slide 21 text

Testing ‣ Guarantee our users the library works as intended ‣ Reduce the number of future issues ‣ Facilitate external contributions

Slide 22

Slide 22 text

Continuous integration

Slide 23

Slide 23 text

Example app ‣ Key factor for developer engagement ‣ Users can copy paste snippets into their apps ‣ Improves quality assessment

Slide 24

Slide 24 text

Example app

Slide 25

Slide 25 text

Badges

Slide 26

Slide 26 text

Quality pyramid UX ROBUSTNESS, RELIABILITY DX

Slide 27

Slide 27 text

Bonus ‣ Node module generator ‣ Commitizen ‣ Semantic Release

Slide 28

Slide 28 text

Release and maintenance Handle it properly

Slide 29

Slide 29 text

Naming

Slide 30

Slide 30 text

Advertise! ‣ Write a blog post in medium ‣ Tweet about it ‣ Use reddit ‣ Use Facebook groups

Slide 31

Slide 31 text

Contribution guidelines ‣ Set it up from the beginning ‣ Avoid medium size PRs without previous discussion ‣ Award contributors: https:/ /github.com/kentcdodds/all- contributors

Slide 32

Slide 32 text

Contribution guidelines

Slide 33

Slide 33 text

Maintenance ‣ Onboard more admins -> offload responsibility ‣ Engage active contributors to become admins ‣ Anticipate that fact before realising you don’t have time for maintenance

Slide 34

Slide 34 text

Present and future ‣ https:/ /github.com/rauliyohmc/react-native-offline ‣ Adding more maintainers to the library ‣ OSS my RN app ‣ So that others can learn from a production ready app ‣ Example of react-native-offline usage

Slide 35

Slide 35 text

Thanks :)