73
from rags to open-source Raleigh, North Carolina 2014

Rags to Open Source - AllThingsOpen, Raleigh, NC 2014

Embed Size (px)

DESCRIPTION

How did a small, completely self-funded team build a web framework that became more popular than comparable tools with million-dollar budgets? By welcoming the outsiders. Mike will recount how Sails.js grew from an internal tool to one of the most popular frameworks for Node.js, without forgetting its roots. Javascript is quickly becoming more than just the lingua franca of the web– it’s rapidly growing in popularity on servers, mobile devices, and embedded systems. In many ways, “Javascript is the new Java.” More and more backend developers are becoming familiar with tools like Bower, Yeoman and Grunt, and Angular has empowered web developers to create single page apps as part of their everyday workflow. As the industry standardizes around Javascript, it’s not only important to take advantage of new tools; we must also make sure these new tools and methodologies are accessible and understandable to developers from more traditional backgrounds. In this talk, Mike will reflect on the experiences he’s had building and managing an open-source Node.js framework, Sails.js. He’ll discuss the success we’ve had attracting interlingual developers to Sails, and share some lessons and difficulties we’ve encountered migrating a new generation of developers from PHP, Java, .NET and Rails to Node.js. He will share examples from both sides of the spectrum, both community-related and technical, including: How to encourage (not dissipate) the growth of subcultures within an open-source community How to reconcile different levels of familiarity and preference for different collaboration tools (Github, IRC, Google Groups, etc) How to assimilate the technical heritages from past frameworks (i.e. syntax, nomenclature, project structure) How to meet expectations around reference documentation, and direct community contribution towards guides and tutorials Mike is an engaging speaker with a knack for dynamic Q&A. He is passionate about the subject matter and can adapt the talk to any time frame. http://allthingsopen.org/talks/rags-to-open-source-the-story-of-sails-js/ http://allthingsopen.org/speakers/mike-mcneil/

Citation preview

Page 1: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

from rags to open-source

Raleigh, North Carolina 2014

Page 2: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Mike McNeil

@mikermcneilgithub.com/mikermcneil

Page 3: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

bdfl ofthe leading open-source MVC framework for Node.js

Page 4: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

the leading open-source MVC framework for Node.js

Page 5: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

at least pageviews since 2013830,000

GitHub stars 8,030

over downloads / day1,500

Page 6: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

in funding$0

Page 7: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 8: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

est. feb 2012

Page 9: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 10: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

(us)

(customer)

(Javascript app)

Page 11: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

love at first sightcirca 2011

Node.js...

Page 12: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

“We’re doing I/O completely wrong.”

Page 13: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

<— “just look at the Unterschied!”

“Not acceptable!”

Page 14: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

“Threads should be used by experts only.”

“Concurrency should be easy.”

Page 15: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

How is that possible?

(copy the browser)

Page 16: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

// synchronous!console.log(‘hi’)

// asynchronous!setTimeout(function (){! console.log(‘hi’);!}, 240000000);

vs.

incredible

Page 17: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

could we use

…for everything?

I wondered…

Page 18: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

so…

Page 19: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 20: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

You don't want to be writing all these system calls.

You need something that gives you… an ORM abstraction, or

something.

Page 21: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

so Sails.js was born

Page 22: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 23: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 24: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 25: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 26: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 27: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 28: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 29: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 30: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 31: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Sails is an MVC framework.

Page 32: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

first version (late 2011)

Page 33: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

December 2012

Page 34: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 35: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

>=20 other community adapters custom app-specific adapters

Page 36: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

January 2013

first halfway-decent docs

http://web.archive.org/web/20130514080123/http://balderdashy.github.io/sails/

Page 37: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

posted screencast in early 2013

Page 38: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

…woke up to 1000 views

Page 39: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

reddit — Feb 2013hacker news — Mar 2013and again two months later

Page 40: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 41: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

managed to get sailsjs.org online

mid-spring 2013

Page 42: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

issues pull requests

questions

Page 43: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 44: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 45: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 46: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

????

Page 47: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

???????????

Page 48: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

v0.9 introduced a new streamlined asset pipeline

Page 49: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

asset pipeline????

“what about gulp?!”

“so thirsty…”

asset pipeline????????!!!!

asset pipeline????????!!!!

asset pipeline????????!!!!

asset pipeline????????!!!!

asset pipeline????????!!!!

Page 50: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

so v0.10 introduced generators.

Page 51: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

feature requests are the hydra

Page 52: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

they will never stop.

Page 53: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

they will never stop.

ever.

Page 54: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

moral of the story

Page 55: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

only write code you actually need

if someone else actually needs something, they’ll write a pull request

only merge new code if someone actually needs you to merge it (i.e. there’s no other way, via a

plugin or something)

Page 56: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 57: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014
Page 58: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Supporting the Community

Page 59: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Tools

Metrics

Advice

Page 60: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

#sails on freenode (IRC)

issues

groups

Page 61: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Tools

Metrics

Advice

Page 62: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

• Github stars

• NPM downloads / day

• Google group membership

• IRC channel activity

• Number of tagged StackOverflow questions(and your answer ratio)

Page 63: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Tools

Metrics

Advice

Page 64: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

inline jsdoc comments are not enough

write docs in markdown

compile to HTML

Page 65: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

don’t repeat yourself

DRY

Page 66: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

don’t repeat ourselves

DRO

the goal of open source

Page 67: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

make an IRC channel start a Google group post a YouTube video

so

Page 68: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

support !== marketing

but remember

Page 69: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

support !== marketing

( )

but remember

Page 70: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

far more front-end developers

than back-end developers

Page 71: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

far more front-end developers

than back-end developers

eventually everyday backend development

will be commoditized

Page 72: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

Questions?

Page 73: Rags to Open Source - AllThingsOpen, Raleigh, NC  2014

from rags to open-source

@mikermcneil