State of the Nation
James Turnbull james@puppetlabs.com
Where we were Puppet user mailing list membership was 3000 With about 600 messages a month The #puppet IRC channel averaged 400 people Puppet on GitHub had 200 forks and 400 watchers We had 50 modules on the Forge
Where we are Puppet users mailing list membership is almost 5000 With 1200 messages a month The #puppet IRC channel averages 800 people Puppet on GitHub has 350 forks and 950 watchers We have over 500 modules on the Forge
So what s next?
BE transparent Tell you what is happening Make decisions in public Work together on roadmap Work together on design Open by default
What we have done recently
data/model separation Lookup of class parameters separate 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 to grow and grow... Now, we return memory to the OS Part of our performance improvement strategy
ENC vs environments You could set the client environment from the ENC The client would ignore you (sometimes) Now it doesn t Bug fix, not feature Still great!
plugin sync This worked unevenly Failures on first run Oddities about what can by synced and used successfully Now, uniform and standard
DSL Polish Add unless to the language Allow keywords as resource parameters and properties 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 our projects over SemVer 2.0.0-rc.1 compliant
it s version-ception!
major version Breaking Changes
Minor version Compatible new features
Patch version Bug fix with no other behavioural or functional changes
which means? You have version numbers that match the way we write and ship code You can be confident about the scope of changes in any release
shipping code faster
OS packages for release candidates
month development releases Waldorf is the next major release after Telly (3.0.0) We will ship a tested version every month as a preview This way you don t have changes a year old before they ship to the community Plus OS packages!
not done yet...
old mistakes still haunt us Parameterized classes don t work everywhere undef vs nil classes with - in the name
slow moving ecosystem Dashboard is being deprecated Puppet Labs modules need more attention...but we are starting to invest in them.
broken (or delayed) promises import isn t deprecated The static compiler isn t the default Facter doesn t have typed or structured facts
the future is not evenly distributed
the ecosystem Shipping structured and typed facts without the ecosystem is a no-go On release, new features should work everywhere
the next challenge Waldorf, kicking ass and taking names
experiment one We are going to fix some high-voted tickets
votes shape the roadmap We said votes matter before It wasn t really true I don t expect you to believe us this time......so we are gonna fix tickets, then ask you to believe us
votes shape the roadmap We want community input into the roadmap This seems a solid choice Success is that votes get used by the community...and that we use them to shape the roadmap!
schedule transparency
redmine Accepted tickets This is the scrum unsorted product backlog
redmine 3.X target version This is we might fix it before 4.0.0
gonna fix that up Target open tickets at the next numeric version Means trying to fix for that release Still shipping time-based product, so things will miss
other experiments You bring em, We try em
tech for waldorf This 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 for supported types and structures Full ecosystem support Third party facts only, initially
better graph processing Improve graph handling in the Puppet Agent Fix the anchor pattern Improves performance and logic Allows future improvements to the catalog and graph
better environments Different versions of a type in different environments Turns out that is pretty hard (thanks, Ruby) We will make it easy Fix performance cost too
cleaner, documented code Easier to use Puppet as a library or extend it Better API definitions Richer integrations
thank you all