An Exercise in Open Source, streams, ES6, and keeping code alive. Presented at Node.js Interactive 2015 in Portland, OR.
WINSTONFOR NODE@4MODERNIZINGAn EXercise in Open source, STREAMS, ES6, AndKEEPING CODE ALIVE.
View Slide
WHY, HELLO THERE
@INDEXZEROWELCOME TO OPEN SOURCE. I WILL BE YOUR GUIDE
@INDEXZERO GITHUB TWITTERWELCOME TO OPEN SOURCE. I WILL BE YOUR GUIDEDIR. UX PLATFORM @GODADDY
Now. LET ME TELL YOUA STORY...
A Long Time AGo In A GalaXy FarFar Away...
A Long Time AGo In A GalaXy FarFar Away...OPEN SOURCEIT’S A STORYActuallyABOUT
MID 2010NODEJITSUSTARTED InNODE.JS WAS LIKEAND BACK THEN
THEWILD WEST
THEWILD WESTBUT REALLY...
THEMODULESWE NEEDED Were like...
404 not found
404 not foundSO, like many othersWE WROTE THEM OURSELVES
THE BEST FEELINGSEver. For Serious.CERTAINLY ONE OF
BUTBACK TO OUR STORY...REMEMBER THAT
THIS IS 2010
THIS IS 2010ACTUALLYJANUARY, 172011
BEFORE THE FIRST ONE OF THESE
NO STREAMS API
ES5 IS STILL NEW
LIMITED CODE COVERAGE
BUT IT WAS STILLA PRETTY GOOD API
ABOUT2.6 MILLIONMONTHLY DOWNLOADSBUNYAN: ~0.56M
WINSTONECOSYSTEM700 PACKAGESOVERIN THE
THERE WERESOMEDARK TIMES
OVER 200+ Open ISSUES
OVER 200+ Open ISSUESUSER NEGATIVITY
OVER 200+ Open ISSUESUSER NEGATIVITYIS THISPROJECTABANDONDED?
FROM YOUR USERSTOTALLY SUCKSTAKING ABUSE“ ”It turns outJUST
YOUR MODULE'S BADAND YOU SHOULD FEEL BAD
YOUR MODULE'S BADAND YOU SHOULD FEEL BADTRUST ME .... … I DID
40#&'6$,*/(/*$&Please: BE#$%@ingNICE
CULTIVATE PERSONAL INTERACTION
CULTIVATE PERSONAL INTERACTIONWHEN IN DOUBT, FOLLow-up Privately THINK OF IT AS DISCRETION.... Or Having some Class.
ONCE AGAINBACK TO OUR STORY...AFTER CAREFUL THOUGHT, MEDITATION,AND THE IOJS RELEASE I DECIDED...
OPEN SOURCEIT CAN BE DONE!
You Are Probably ThinkingBUT HOW?
SCIENCE CAT SAYS“ ”GOOD QUESTION
WRITING CODEISTHE FIRST ANSWERABSOLUTELY NOT
DO HAVEA LONG TERMPROJECT GOAL
WILLING TO HELPFIND ANYONEWHO ISWEEKLY MEETINGSAND START
YES! WE WANT YOU!TO JOIN WINSTON
TRIAGE ALL THE THINGS!
ISSUES, FIRST.THEN PULL REQUESTS.TRIAGE ALL THE THINGS!
HIGH LEVEL PROBLEMSFINDTHETRIAGE INTO BUCKETSAND
HIGH LEVEL PROBLEMSFINDTHETRIAGE INTO BUCKETSAND NEXT-MINOR NEXT-MAJOR NEXT-PATCH
REVERSED LEVELS
COMMON.LOG
HERE BEDRAGONS
THEN YOUCAN LAND YOUR PRS
THEN YOUCAN LAND YOUR PRSDO NOT REFACTOR THE THINGS YOU HATEYET. For SeRIOUS.
BUT I HATE THE THINGSI HATE ABOUTmy Code!
PATIENCE
LANDING OLD PRS IS HARDIT GETS EVEN HARDER ASMORE OF THE CODE CHANGES
JUST ASK THEM TO RESUBMIT
THERE IS USUALLYONLY ONE CHANCE PER PR.DEVELOPERS VERY RARELY COMMIT
#&'6$,*/($0/4*45&/5
#&'6$,*/($0/4*45&/5THIS PERSONDO NOT BEPLEASE
IT IS EASIER TO MERGERATHER THAN REFACTORTHEN REFACTORTHEN MERGE
NOW YOU CANFOCUSPROJECT GOALON THAT LONG TERM
[email protected]SMALL BREAKS
[email protected]BIGGER BREAKS
[email protected]BREAK TO NEW APIS
STREAMSALL THE THINGS
MOCHAALL THE TESTS
INTRODUCEFORMATS
FORMATSYOUR OWNDEFINE
SHAREDFUNCTIONALITY
SHAREDFUNCTIONALITYrequire(‘winston-transport’);
SHAREDFUNCTIONALITYrequire(‘winston-transport’);require(‘abstract-winston-transport’);
BACKWARDSCOMPATABILITY
BACKWARDSCOMPATABILITYrequire(‘winston-compat’);
BACKWARDSCOMPATABILITYrequire(‘winston-compat’); common.log
BACKWARDSCOMPATABILITYrequire(‘winston-compat’); common.logwinston.transports.Transport
BACKWARDSCOMPATABILITYrequire(‘winston-compat’); common.logwinston.transports.TransportOld vows-based test macros
require(‘logmark’)
require(‘logmark’)30% FASTERTHAN WINSTON@2
require(‘logmark’)30% FASTERTHAN WINSTON@250% FASTER THAN BUNYAN
IN BETA THIS WEEK {github, twitter}.com/indexzeroMAY THE SOURCE BE WITH YOU
YES! WE WANT YOU!TO JOIN WINSTONSPECIAL THANKS TOAlberto Pose & Jarrett Cruger