Think Big

SFNode Meetup at Bigcommerce

Last Thursday, we at Bigcommerce had the opportunity to host the november SFNode meetup. There were 3 speakers: Rich Trott, Joe McCann, and our very own Mick Ryan.

Rich Trott on contributing to Node.js

SFNode Bigcommerce Rich Trott

Rich Trott started out the night strong. Being a regular contributor to Node.js, he invited all of us to take the leap and join him in contributing to the popular Javascript runtime. His muppet-filled presentation (yes, half of his slides were pictures of muppets!) illustrated a common problem associated with new contributions to big repos: where do I start?

Rich's answer to this problem is to start with tests. Tests have often been overlooked as a second citizen, often treated only as an afterthought. In the Node repo, there are over a dozen issues marking tests as "flaky", and those would be great places to start. Rich encourages any new contributors to dive into a certain part of the code base already with some test coverage, learn about it, and add new tests to it. This approach serves the benefit of a more targeted process to approach a codebase, a low-risk first contribution, and more robust test coverage makes everyone happy.

Mick Ryan on Bigcommerce's journey with Stencil

SFNode Bigcommerce Mick Ryan

Mick is a core part of Bigcommerce's Stencil team, a powerful and completely new engine soon to power Bigcommerce themes. This is also the first project where the company has incorporated Node.js for production use. Stencil has two core components that will be using Node: Stencil-Cli and Stapler.

Stencil-Cli will be what theme developers run locally during development. It uses Hapi.js, along with other goodies like Browsersync and Nodesass. This local server talks with Stapler to render a preview of the local changes using actual store data (products, categories, etc).

Stapler is a Node.js layer running in production that handles requests coming from both local Stencil-Cli and live stores. Stapler also combines with data coming from the core Bigcommerce application to render the storefront.

Mick pointed out that introducing Node.js in Bigcommerce's stack introduced several benefits:
1) much smoother development process for themes developers and merchants
2) empower third party theme developers the use of technologies like Sass
3) allow instant preview of any changes using the store's actual configuration
4) modularization of the codebase to break out storefront rendering from the core PHP app

Joe McCann on how we went from v0.10 to v4.0

SFNode Bigcommerce Joe McCann

Joe McCann, the CEO of Node Source (provides enterprise-grade Node services), gave us a quick history lesson on how we went from one v0.* to v4.0 (and now v5.0). He talked about the building frustration in Node.js's very slow development speed that eventually led to the fateful Thanksgiving day, 2014, when Fedor Indutny and several other members on the core team forked Node.js. The many changes that followed io.js's departure from Node.js in the next months proved to be very fruitful. But eventually, the lack of stability and future support deterred many bigger organizations from jumping on the io.js train. About 2 months ago, io.js and Node.js has again officially joined hands, and the semantic versioning that landed settled on V4.0.

To avoid history from repeating itself, Node.js plans to bring the best of both worlds. Going onwards, the new Node community plans to adopt a LTS (Long Term Support) model of 16 months active support followed by a 12 month maintenance period. Meanwhile, active development will continue to happen in what's considered the non-production v5.*.

Overall, the meetup this past Thursday has been a huge success. Personally, I've learned quite a bit from the event, from specific technical details on Node.js application architectures to the juicy back story around Node.js development process. Stay tuned for other meetups hosted at Bigcommerce!

Ray Ma

Frontend Engineer at Bigcommerce