Slide 1

Slide 1 text

Contributing to Ember THE INSIDE SCOOP http://flic.kr/p/gQ8PaV

Slide 2

Slide 2 text

Who the heck is this guy? ● Ember Release Management Team ● Frequent Ember.js Contributor ● General OSS addict twitter: rwjblue github: rjackson

Slide 3

Slide 3 text

About DockYard ● Hosting WickedGoodEmber conference (register at wickedgoodember.com) ● Contact us at dockyard.com.

Slide 4

Slide 4 text

Why is Ember Awesome?

Slide 5

Slide 5 text

Why is Ember Awesome? Collection of Concepts/Ideas (possibly the only JS “Framework”)

Slide 6

Slide 6 text

Why is Ember Awesome? ● Community ● We need your ideas/contributions! ● Current at 330+ Contributors

Slide 7

Slide 7 text

Okay, how can I help? ● Fix / Cleanup documentation ● Report and/or Fix Bugs you Find ● Submit new features

Slide 8

Slide 8 text

Documentation https://flic.kr/p/5mgRqa

Slide 9

Slide 9 text

Helping with Docs ● Often, thankless. ● THANK YOU! ● Prefix Commit

Slide 10

Slide 10 text

Commit Prefix - Docs ● `[DOC] Fixed typo in blah.` ● `[DOC beta] Fixed typo in blah.` ● `[DOC release] Fixed typo in blah.`

Slide 11

Slide 11 text

Bug-fixes https://flic.kr/p/2xvHcU

Slide 12

Slide 12 text

Its messed up, lemme fix it ● Add test showing regression ● Fix issue ● Prefix commit

Slide 13

Slide 13 text

Commit Prefix - Bug-fixes ● `[FEATURE ember-metal-zomg] Fix blah` ● `[BUGFIX beta] Fix dummy` ● Only severe regressions will be pulled into release channel.

Slide 14

Slide 14 text

Unless its a security vuln... ● Email [email protected] ● Work with the Core Team on a fix ● Read the full policy at: emberjs.com/security

Slide 15

Slide 15 text

Features https://flic.kr/p/4CrXVC

Slide 16

Slide 16 text

Huh, what are features? ● New API’s ● Backwards compat changes to API’s ● Hidden behind a feature flag

Slide 17

Slide 17 text

What is a feature flag? It’s just an `if` block used by the build process.

Slide 18

Slide 18 text

Why Feature Flags? ● Keep releases stable ● Allow faster iteration ● Help ensure SemVer

Slide 19

Slide 19 text

How does it work? ● `defeatureify` processes builds ● Can strip flagged code

Slide 20

Slide 20 text

What is enabled? Check the `features.json` file.

Slide 21

Slide 21 text

What does this mean? `true` `false` `null` Enable & remove flags Disable & remove Disable & leave

Slide 22

Slide 22 text

Features in Channels Channel Flags In Build Canary Yes Beta No Release No

Slide 23

Slide 23 text

Can I enable features in beta/release builds? YES!!! But you may not want to…

Slide 24

Slide 24 text

YES, PLEASE DO!!! Testers welcome, the more the merrier! Can I enable features in canary builds?

Slide 25

Slide 25 text

Awesome, how do I do it? EmberENV = { FEATURES: { 'query-params-new': true } };

Slide 26

Slide 26 text

How can I contribute one? ● Add to features.json (null value) ● Add to FEATURES.md ● Hide changes behind flags ● Good tests (also behind flags) ● Prefix commit

Slide 27

Slide 27 text

Choosing flag name Package Name + Short Feature Name `ember-metal-zomg`

Slide 28

Slide 28 text

Add to features.json ● Add as last line ● Set value to `null` ● Rebase on EVERY change

Slide 29

Slide 29 text

Add to FEATURES.md Add an entry with a clear description. Include PR link for further reading.

Slide 30

Slide 30 text

Hide changes behind flags: if (Ember.FEATURES.isEnabled('ember-metal-zomg')){ // Your feature code here } else { // Code to execute when disabled }

Slide 31

Slide 31 text

Check the “Enable Opt Features” check box in the QUnit UI. How do I run the tests?

Slide 32

Slide 32 text

Commit Prefix - Features Use FEATURE + feature name: `[FEATURE ember-metal-zomg]`

Slide 33

Slide 33 text

Merge me, pretty please? ● Review takes time ● Please be patient ● Please be polite :D

Slide 34

Slide 34 text

OK, its merged, now what? ● Security Audit ● Reviewed by Core Team ● Go/No-Go Decision

Slide 35

Slide 35 text

Release Cycle https://flic.kr/p/7JxoN6

Slide 36

Slide 36 text

Process ● 3 Channels ● 6 Week Release Cycles

Slide 37

Slide 37 text

Canary ● New Features ● Bugfixes ● tldr; Everything

Slide 38

Slide 38 text

Beta ● Branched from Canary ● Bug fixes ● Doc updates ● Weekly Releases

Slide 39

Slide 39 text

Release ● Branched from Beta ● Doc updates ● Major Regressions ● Security Fixes

Slide 40

Slide 40 text

Commit Prefix Recap https://flic.kr/p/7Zd6BJ

Slide 41

Slide 41 text

Commit Prefix - Recap [DOC channel] Message. [BUGFIX channel] Message. [FEATURE feature-name] [SECURITY CVE-111-1111]

Slide 42

Slide 42 text

[DOC channel] ● Use for documentation changes. ● Target affected channel.

Slide 43

Slide 43 text

[BUGFIX channel] ● Use for bug-fixes (duh). ● Target affected channel ● Only severe bugs will warrant new tag/release.

Slide 44

Slide 44 text

[FEATURE feature-name] ● Use for new features ● Use for bug-fixes to features.

Slide 45

Slide 45 text

[SECURITY CVE-000-0000] ● Used exclusively by security team ● Simultaneous publishing and release

Slide 46

Slide 46 text

Contributions welcome! Seriously, I mean it. https://flic.kr/p/AApJr

Slide 47

Slide 47 text

Thank You Knowing is half the battle...