Contributing to Node Core
JaxNode March 2018
Why would you want to contribute to an OSS project?
Node.js OSS History
- Started by Ryan Dahl in 2009
- Sponsored by Joyent
- Community forked IO.js in 2014
- IO.js and Node merged back in 2015
- Initially had 2 committees, CSC & TSC
- Both committees merged into one, TSC
- There has been some Drama
James M Snell
Node TSC and Core contributor
Poor experience with first commit
Node OSS Stats
- 133 Repos
- 283 Users Commit access
- 1927 Users contributed
- Over 21,000 commits
Ways to contribute
- File a an Issue
- Unit Tests
- Documentation
- Modules
- Node Core
- Blog/medium Posts
- User Group Presentation
Node Core
- github.com/nodejs/node
- Combination of C++ and JS
- Mostly JS
- V8 default engine
- LIBUV used to manage async and event loop
JS Engines
- Node.js was built on top of V8
- Sometimes Node would break with new V8 releases
- As of last year, V8 can no longer break Node
- V8 added new interpreter and compiler toolchain
- Igniter and TurboFan
- Node can also use Chakra Core
- V8 and Chakra Core both conform to a Node Interface
Look at Source and Build
- git clone https://github.com/nodejs/node.git
- Need GCC or LLVM compatible
- ./configure
- make -j4
Folder Structure
- /benchmark
- /deps
- /doc
- /lib
- /source
- /test
- /tools
Important folders
- /doc => Documentation on nodejs.org/api
- /lib => JS Code
- /src => C++ code
- /test => Unit tests
Node.js does not have a strategic roadmap
Module Development
- Node made up of Core Modules
- Move to remove some modules from Core
- Most modules actually come from NPM
- HTTP/2 recently added to Core
- Express has been modified to work with HTTP/2
- Almost all NPM modules Open Source
Where find work to be done
- Github issues
- API Documentation
- Node Todo website
Donate Hardware
Where is Help Needed
- APIs need promises
- async await
- ES6 Modules
- Async-Hook
- Workers (think Web Workers)
- Static Error Codes
- Better i18n
- Improved Native Modules (N-API)
How Do I Submit Changes
- Fork the Github Repo
- Read the CONTRIBUTING.md and CODE_OF_CONDUCT.md docs
- Test
- Make a pull request
- Code Review and changes
Typical Linux Kernel Commit
Because if you want me to "act professional", I can tell you that I'm not interested. I'm sitting in my home office wearing a bathrobe. The same way I'm not going to start wearing ties, I'm *also* not going to buy into the fake politeness, the lying, the office politics and backstabbing, the passive aggressiveness, and the buzzwords. Because THAT is what "acting professionally" results in: people resort to all kinds of really nasty things because they are forced to act out their normal urges in unnatural ways.
- Linus Torvalds
Node Reviewers Nicer
- They should be helpful
- Use the Style Guide
- Be Professional
- css-tricks.com/code-review-etiquette/
Nodejs.org
- Node.js website also on Github
- If you speak foreign language, could use internalization help
- Built using Metalsmith
Working Groups
- Node.js WGs have their own Repo
- Usually have scheduled meetings over Google+
- WG include committees on subjects such as Benchmarking, Testing, Diversity, Express and Security
- Many more...
Node.js Collection
- Online Node.js Magazine
- Full disclosure, I am an editor
- Runs on Medium
- Submit your post to Node.js Collection
Other Notable OSS Projects
- React and React Native
- Angular.js
- Babel
- .NET Core
- Swift Language
- Ruby On Rails
- Jaxnode.com
- Pick a NPM Package
- Create Your Own
Questions?
Contact Me
- David Fekke
- David Fekke at gmail dot com
- Skype: davidfekke
- Twitter @jaxnode
nodecore
By David Fekke
nodecore
Slides from the March 2018 presentation on contributing to Node.
- 1,257