PuppetCamp SEA 1 - The State of Puppet

Post on 19-Jun-2015

801 views 0 download

Tags:

description

James Turnbull, VP of Tech Operations at Puppetlabs, started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed they have a strong link to their community and plan to keep it that way. He explained that they grew from very small to 70+ people over the last year, and that brings some issues with it. They are very dedicated to fixing those issues though, and hope to improve things moving towards the future.

transcript

JAMES TURNBULLjames@puppetlabs.com

BE TRANSPARENT

Tell you what is happening

Make decisions in public

Work together onroadmap

Work together on design

Open by default

WHAT WE HAVE DONERECENTLY

DATA/MODEL SEPARATION

Lookup of class parametersseparate from the manifest

You can assume it is there!

No manifest changes needed

Uses Hiera as the back-end

RUBY 1.9.3...is finally a first class citizen.

This is part of 3.0.0

Fully supported.All bugs fixed.

(Probably)

PUPPET MODULE TOOL

Project Geordi La Forge

PMT ships with 3.0.0

Making it more awesome!

Buffing up publishing

Enhance the forge

VARIABLE SCOPE FIXED

No more dynamic scope

Killed deprecation warnings!

Local, then inherited...

...then node, then global.

GIVE BACK MEMORY

Daemon mode used togrow and grow...

Now, we return memoryto the OS

Part of our performanceimprovement strategy

ENC VS ENVIRONMENTS

You could set the clientenvironment from the ENC

The client would ignoreyou (sometimes)

Now it doesn’t

Bug fix, not feature

Still great!

PLUGIN SYNC

This worked unevenly

Failures on first run

Oddities about what can bysynced and used successfully

Now, uniform and standard

DSL POLISH

Add “unless” to thelanguage

Allow keywords asresource parameters andproperties

Fixed some parser bugs (like ‘-’ in variable names)

More of this coming...

HIDDEN CHANGES

Lots of bugs fixed

Code cleanup

Performance improvements

Correctness fixes

None of them visible

FINALLY SHIPPING!

Puppet 3.0.0

Facter 2.0.0

Hiera 1.0.0

COMMITTING TO SEMVER

Semantic Versioning FTW

We are moving all ourprojects over

SemVer 2.0.0-rc.1compliant

IT’S VERSION-CEPTION!

MAJORVERSIONBreaking Changes

MINORVERSION

Compatible new features

PATCHVERSION

Bug fix with no otherbehavioural or functional

changes

WHICH MEANS?

You have version numbersthat match the way we writeand ship code

You can be confident aboutthe scope of changes in anyrelease

SHIPPING CODE FASTER

OS PACKAGES FOR RELEASE CANDIDATES

MONTH DEVELOPMENT RELEASESWaldorf is the next major

release after Telly (3.0.0)

We will ship a testedversion every month as apreview

This way you don’t havechanges a year old beforethey ship to the community

Plus OS packages!

NOT DONE YET...

OLD MISTAKES STILL HAUNT US

Parameterized classes don’twork everywhere

undef vs nil

classes with ‘-’ in the name

SLOW MOVING ECOSYSTEM

Dashboard has not gotten alot of love recently

Puppet Labs modules needmore attention

...but we are starting toinvest in them.

BROKEN (OR DELAYED)PROMISES

import isn’t deprecated

The static compiler isn’t thedefault

Facter doesn’t have typedor structured facts

THE FUTURE

THE ECOSYSTEM

Shipping structured andtyped facts without theecosystem is a no-go

On release, new featuresshould work everywhere

THE NEXT CHALLENGEWaldorf, kicking ass and taking names

EXPERIMENT ONEWe are going to fix some high-voted tickets

VOTES SHAPE THE ROADMAPWe said votes matter

before

It wasn’t really true

I don’t expect you tobelieve us this time...

...so we are gonna fixtickets, then ask you tobelieve us

VOTES SHAPE THE ROADMAP

We want community inputinto the roadmap

This seems a solid choice

Success is that votes getused by the community

...and that we use them toshape the roadmap!

SCHEDULE TRANSPARENCY

REDMINE “ACCEPTED” TICKETSThis is the scrum “unsorted product backlog”

REDMINE “3.X” TARGET VERSIONThis is “we might fix it before 4.0.0”

GONNA FIX THAT UP

Target open tickets at thenext numeric version

Means “trying to fix for thatrelease”

Still shipping time-basedproduct, so things will miss

OTHER EXPERIMENTSYou bring ‘em, We try ‘em

TECH FOR WALDORFThis is all speculative, no promises.

STATIC COMPILER

Missed Telly, but only just

Content reference, not URI

Single file catalog?

Easier push model?

STRUCTURED FACTS

Really, structured and typed

JSON is the template forsupported types andstructures

Full ecosystem support

Third party facts only,initially

BETTER GRAPH PROCESSING

Improve graph handling inthe Puppet Agent

Fix the “anchor” pattern

Improves performance andlogic

Allows futureimprovements to the catalogand graph

BETTER ENVIRONMENTS

Different versions of a typein different environments

Turns out that is prettyhard (thanks, Ruby)

We will make it easy

Fix performance cost too

CLEANER, DOCUMENTED CODE

Easier to use Puppet as alibrary or extend it

Better API definitions

Richer integrations

THANK YOU ALL